如何在LINQ中执行GroupBy多列
SQL中与此类似的东西:
SELECT * FROM <TableName> GROUP BY <Column1>,<Column2>
Run Code Online (Sandbox Code Playgroud)
如何将其转换为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
Run Code Online (Sandbox Code Playgroud) 我正在尝试在vb.net中编写一个linq到对象查询,这是我正在尝试实现的c#版本(我在linqpad中运行它):
void Main()
{
var items = GetArray(
new {a="a",b="a",c=1}
, new {a="a",b="a",c=2}
, new {a="a",b="b",c=1}
);
(
from i in items
group i by new {i.a, i.b} into g
let p = new{ k = g, v = g.Sum((i)=>i.c)}
where p.v > 1
select p
).Dump();
}
// because vb.net doesn't support anonymous type array initializer, it will ease the translation
T[] GetArray<T>(params T[] values){
return values;
}
Run Code Online (Sandbox Code Playgroud)
我很难使用不同的语法组(vb在某些地方需要'identifier = expression',以及带''表达式'的求和算子')
非常感谢你的帮助!