将vb.net linq转换为c# linq
本文关键字:linq 转换 net vb | 更新日期: 2023-09-27 18:15:27
我在VB.net中有以下功能,并试图将其转换为c#,但我有困难。有人能帮我一下吗?
代码如下:
Dim subset = Sheets.Where(Function(kvp As KeyValuePair(Of Integer, Sheet)) kvp.Value.Members.Where(Function(m As Member) m.MemberType = MemberType).Count() > 0)
subset.ToList().ForEach(Sub(kvp As KeyValuePair(Of Integer, Sheet)) WeightByType += (kvp.Value.Members.Sum(Function(m As Member) Convert.ToDecimal(m.TotalWeight, CultureInfo.InvariantCulture))))
应该是这样的:
var subset = Sheets.Where(kvp => kvp.Value.Members.Where(m => m.MemberType == MemberType).Count()> 0);
subset.ToList().ForEach(kvp => WeightByType += (kvp.Value.Members.Sum(m => Convert.ToDecimal(m.TotalWeight, CultureInfo.InvariantCulture))));
这些都可以简化为以下内容
return Sheets
.Where(kvp => kvp.Value.Members.Where(m => m.MemberType == MemberType).Count() > 0)
.Sum(kvp => kvp.Value.Members.Sum(m => Convert.ToDecimal(m.TotalWeight, CultureInfo.InvariantCulture)));
我把这两个答案都拿来用了。新代码看起来像这样:
decimal wbt = 0;
wbt += MbrSheets
.Where(kvp => kvp.Value.Members.Where(m => m.MemberType == MemberType).Count() > 0)
.Sum(kvp => kvp.Value.Members.Sum(m => Convert.ToDecimal(m.TotalWeight, CultureInfo.InvariantCulture)));
return wbt;
不确定您是否知道这个,但是有一个非常好的在线代码转换器,Telerik已经启动并运行了很长时间了。
我过去用它很幸运。它将从VB转换为c#,反之亦然。
http://converter.telerik.com