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是什么类型?