【发布时间】:2021-12-15 09:25:21
【问题描述】:
我正在尝试将以下 LINQ 代码从 VB.NET 转换为 C#,这是在 DataTable“tvp_dtl”上执行的。后面是VB代码。
Dim query
query = From row In tvp_dtl
Group row By dataGroup = New With {
Key .Tmall_txn_no = row.Field(Of String)("Tmall_txn_no"),
Key .stock_code = row.Field(Of String)("stock_code"),
Key .ItemNameLocalLang = row.Field(Of String)("ItemNameLocalLang"),
Key .ItemUnitPrice = row.Field(Of String)("ItemUnitPrice"),
Key .itemTotalAmount = row.Field(Of String)("itemTotalAmount")
} Into Group
Select New With {
.Tmall_txn_no = dataGroup.Tmall_txn_no,
.stock_code = dataGroup.stock_code,
.ItemNameLocalLang = dataGroup.ItemNameLocalLang,
.ItemUnitPrice = dataGroup.ItemUnitPrice,
.itemTotalAmount = dataGroup.itemTotalAmount,
.SumAmount = Group.Sum(Function(x) Integer.Parse(x.Field(Of String)("ItemNumber")))}
这是我用 C# 编写的版本
var query = from row in tvp_dtl
group row by new
{
row.Tmall_txn_no = row.Field<string>("Tmall_txn_no"),
row.stock_code = row.Field<string>("stock_code"),
row.ItemNameLocalLang = row.Field<string>("ItemNameLocalLang")
} into dataGroup
select new
{
Tmall_txn_no = dataGroup.Field<string>("Tmall_txn_no"),
stock_code = dataGroup.Field<string>("stock_code"),
ItemNameLocalLang = dataGroup.Field<string>("ItemNameLocalLang"),
ItemUnitPrice = dataGroup.Field<string>("ItemUnitPrice"),
itemTotalAmount = dataGroup.Field<string>("itemTotalAmount"),
SumAmount = dataGroup.Sum(x => int.Parse(x.Field<string>("ItemNumber") * int.Parse(x.Field<string>("QtyPerSet"))))
};
但我认为这是不正确的。此外,使用“tvp_dtl”时出现此错误
找不到源查询模式的实现 键入“数据表”。未找到分组依据
【问题讨论】:
标签: linq c#-to-vb.net vb.net-to-c#