我从数据层获取数据,我需要使用Linq To Objects在中间层进行转换(我不控制应用程序的这一层)。我必须使用多个键执行分组操作,然后在非键字段上执行字符串连接。根据下面的数据,我想按CustomerID和Date进行分组,并创建一个新结构,其中只根据键生成一行,非键字段(在本例中为Item)合并为一个字符串: / p>
CustomerID Date Item
A 11/1/2001 Bread
A 11/1/2001 Orange Juice
A 11/1/2001 Salad Dressing
B 11/1/2001 Bananas
C 5/6/2001 Candy
C 12/8/2005 Candy
CustomerID Date Item
A 11/1/2001 Bread
Orange Juice
Salad Dressing
B 11/1/2001 Bananas
C 5/6/2001 Candy
C 12/8/2005 Candy
这是否可以使用功能样式linq语法或者我是否必须采用老派命令式foreach语法?
答案 0 :(得分:3)
可替换地:
var results = items
.GroupBy(i => new { i.Date, i.CustomerID })
.Select(g => new {
CustomerID = g.Key.CustomerID,
Date = g.Key.Date,
Item = string.Join(", ", g.Select(i => i.Item).ToArray())
});
答案 1 :(得分:2)
这样的东西?
var result = from item in items
group item by new { item.Date, item.CustomerID } into g
select new
{
g.Key.CustomerID,
g.Key.Date,
Item = string.Join(", ", from i in g select i.Item)
};