使用Linq,您可以对其进行分组和汇总或分组和计数。是否可以对连续字符串进行分组?
以下是一个例子:
var list = (from x in Context.tblProduct
group x by new { x.OrderNo, x.Color } into groupedByColorCode
select new
{
OrderNo = groupedByColorCode.Key.OrderNo,
ProductRef = groupedByColorCode.FirstOrDefault().ProductRef,
Color = groupedByColorCode.Key.Color,
Size = groupedByColorCode.Concat(bcc => bcc.Size).ToString(), // This line doesn't work
TotalQuantity = groupedByColorCode.Sum(bcc => bcc.OriQty).ToString()
});
我应该写什么代替
Size = groupedByColorCode.Concat(bcc => bcc.Size).ToString()
答案 0 :(得分:4)
只需使用接受String.Join
的{{1}}重载:
IEnumerable<string>
编辑:哦:我明白了!我从来没有使用Linq进行SQL查询,所以我没有赶上这个问题。如果将其转换为SQL,则无法在数据库上执行此操作(如果您不在PostgreSQL或其他智能数据库上,并且您不想混淆SQL本身)。 SQL可以做Sum,Avg等,但没有Concat(通常)。 您必须使用提供的方法检索颜色代码并在db上往返后加入它们。
答案 1 :(得分:0)
您也可以使用聚合作为替代方案 - 尽管连接(已建议)是最直接的方法。 Smink在回答类似问题时描述了这个过程:
虽然正如另一篇文章指出的那样,它可能比stringbuilder慢得多。