在使用Linq进行分组时是否可以连接字符串?

时间:2016-03-16 00:54:31

标签: c# linq

使用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()

2 个答案:

答案 0 :(得分:4)

只需使用接受String.Join的{​​{1}}重载:

IEnumerable<string>

编辑:哦:我明白了!我从来没有使用Linq进行SQL查询,所以我没有赶上这个问题。如果将其转换为SQL,则无法在数据库上执行此操作(如果您不在PostgreSQL或其他智能数据库上,并且您不想混淆SQL本身)。 SQL可以做Sum,Avg等,但没有Concat(通常)。 您必须使用提供的方法检索颜色代码并在db上往返后加入它们。

答案 1 :(得分:0)

您也可以使用聚合作为替代方案 - 尽管连接(已建议)是最直接的方法。 Smink在回答类似问题时描述了这个过程:

Using Aggregate Queries

虽然正如另一篇文章指出的那样,它可能比stringbuilder慢得多。