如何使用LINQ组合行?

时间:2011-10-05 18:12:23

标签: linq entity-framework linq-to-entities

假设我有一个具有以下属性的实体[Id,UserName,ProductName],其中Id是PK,其他字段不是唯一的,因此具有相同UserName的行重复多次。

对于其中一个视图,我需要获得一个具有唯一UserName的集合,其他字段将使用字符串连接或类似的东西组合在一起。

如果我有

[0, John, Alpha]
[1, Mary, Beta]
[2, John, Gamma]

我需要一个能让我得到像

这样的集合的查询
[John, Alpha Gamma]
[Mary, Beta]

如果可以在数据库端完成所有这些而不加载实体,那将是非常棒的。

1 个答案:

答案 0 :(得分:2)

您正在寻找GroupBy()

var results = context.MyEntities.GroupBy( x => x.UserName);

foreach (var item in results)
{
    Console.WriteLine("{0} : {1}", item.Key, string.Join(",", item.Select( x=> x.ProductName));
}