Linq to Sql - 将C#转换为VB.NET帮助

Rya*_*yan 0 linq vb.net linq-to-sql

我在将C#Linq语句转换为VB.NET时遇到了麻烦.我需要转换以下语句.我在i.Sum(v => v)部分被挂断了.

from p in Products
from u in Users
let i = (from op in OrderProducts
         where op.Order.User == u && op.Product == p
         select op.ProductQty)
let quant = i.Count() == 0 ? 0 : i.Sum(v=>v)
select new {p.ProductName, u.UserName, Quantity = quant}
Run Code Online (Sandbox Code Playgroud)

这是我对VB的看法,但If(i.Count()= 0,0,i.Sum())_语句表示在运行时期间不支持无参数聚合运算符'Sum'(没有编译时错误).我也尝试了i.Sum(函数(q)i.ProductQty),它也不起作用(表示不能用这些参数调用sum).

From p In Products _
From u In Users _
Let i = (From op In OrderProducts _
         Where op.Order.User.UserID = u.UserID And op.Product.ProductID = p.ProductID _
         Select op.ProductQty) _
Let Qty = _
         If(i.Count() = 0, 0, i.Sum()) _
Select New With {p.ProductName, u.Username, Qty}
Run Code Online (Sandbox Code Playgroud)

有关如何将其转换为VB.NET并运行的任何想法?谢谢!

Lar*_*nal 6

C#中的"箭头"语法:

.Sum(v => v)
Run Code Online (Sandbox Code Playgroud)

可以在VB.NET中转换为以下内容:

.Sum(Function(v) v)
Run Code Online (Sandbox Code Playgroud)

"箭头"语法是lambda表达式.有关VB.NET中Lambda表达式的更多信息,请查看此MSDN条目.