读书人

linq的group by 缺陷?解决办法

发布时间: 2012-01-19 00:22:28 作者: rapoo

linq的group by 缺陷?
最近遇到一个需要用linq来进行group by 分组的问题
我想实现的sql如下:
select * from table group by @param
其中的@param为变量,可以由用户选择按什么来进行分组。如:状态,创建人等
但是在linq中却不能这么灵活的拼接字符串了~

我用linq写了一个按照固定字段“状态”来进行分组的语句。
难道linq真的无法实现这样的功能吗?

C# code
from ss in table         group ss by ss.status into g         select new         {             KEY = g.Key,             COUNT = g.Count()         }


[解决办法]
List<A> List = new List<A>();
var P= List
.GroupBy(x => new { x.Age, x.Sex })
.Select(group => new {
Stu= group.Key, Count = group.Count()
});
foreach (var a in P) {

}


[解决办法]
C# code
        from ss in table        group ss by ss.GetType().GetProperty(@param) into g        select new        {             KEY = g.Key,             COUNT = g.Count()        };
[解决办法]
只能是指定的。
[解决办法]
这情况还是只能用字符串拼凑
[解决办法]
用lambda表达式树可以实现的

[解决办法]
可以的,楼主要用自定义分组,类似于linq in action那本书里面有个自定义排序的例子

void CustomerGroup<TKey>(Func<Book,TKey> selector)
{
var books=
from book in books group book by selector(book) select book;
}

然后调用CustomerGroup(book=>book.任何属性)
[解决办法]
sorry,忘写into了,完整地语句如下:

void CustomerGroup<TKey>(Func<Book,TKey> selector)
{
var books =
from book in Books
group book by selector(book) into pricebooks
select new { Price = pricebooks.Key, Title = pricebooks };

}
[解决办法]
应该是可以的

[解决办法]
#3楼 得分:0回复于:2009-12-08 09:28:55引用:
select * from table group by @param

可以这样使用sql的吗???



这样是拼字符串的方式,意思是说后面的group by是可变的参数,根据传的值来进行分组,而不是写死。

不死也不呀 select * from table group by @param
分可用*呀??。。。。

[解决办法]
你的table是什么类型?

读书人网 >.NET

热点推荐