如何在LINQ中执行GroupBy多列
SQL中与此类似的东西:
SELECT * FROM <TableName> GROUP BY <Column1>,<Column2>
如何将其转换为LINQ:
QuantityBreakdown
(
MaterialID int,
ProductID int,
Quantity float
)
INSERT INTO @QuantityBreakdown (MaterialID, ProductID, Quantity)
SELECT MaterialID, ProductID, SUM(Quantity)
FROM @Transactions
GROUP BY MaterialID, ProductID
12 回答
程序样本
使用匿名类型 .
例如
x由新{x.Col,x.Col}组成
.GroupBy(x => (x.MaterialID, x.ProductID))
需要注意的是,您需要为Lambda表达式发送一个对象,并且不能为类使用实例 .
例:
这将编译但会生成 one key per cycle .
如果您不想命名关键属性然后检索它们,您可以这样做 . 这将正确
GroupBy
并为您提供关键属性 .您还可以使用元组<>进行强类型分组 .
从C#7开始,你也可以使用值元组:
要么
虽然这个问题是按类属性询问,但是如果要针对ADO对象(如DataTable)按多个列进行分组,则必须将“新”项分配给变量:
好的,这是:
对于按多列分组,请尝试此操作...
以同样的方式添加Column3,Column4等 .