我正在尝试将一些VB代码转换为C#。下面的VB.Net代码正在运行。
GroupCategories是一个分组类别列表,它只是获取一些数据并将其存储在列表中。
For Each Groups In From g In GroupCategories Group By GroupInfo = New With {g.Id, g.Name} Into SubCategories = Group Select GroupInfo, SubCategories
For Each sc In Groups.SubCategories
....
Next
If Groups.GroupInfo.Id Is Nothing Then
....
End If
End If
Next
我尝试转换为C#:
foreach (var Groups in from g in GroupCategories group GroupInfo by new {g.Id, g.Name } into SubCategories select new { GroupInfo, SubCategories })
{
....
}
我尝试了一些在线变形器,但没有成功转换。我已经阅读了MSDN的C#等效https://msdn.microsoft.com/en-us/library/bb545971.aspx,但我似乎仍然无法使其工作。
目前的错误是
无法将lambda表达式转换为类型'System.Collections.Generic.IEqualityComparer',因为它不是委托类型
阅读错误给了我一些建议,但我仍然遇到错误转换。我不知道还有什么我可以尝试,因为我尝试了将每个组拆分为自己的部分的组合,但弹出类似的错误。任何人都可以看到我在哪里出错?
答案 0 :(得分:1)
我认为您正在寻找以下linq查询:
from g in GroupCategories
group g by new { g.Id, g.Name } into SubCategories
select new { SubCategories.Key, SubCategories }
或同等的:
GroupCategorias.GroupBy(g => new { g.Id, g.Name })
.Select(group => new { group.Key, group });
坦率地说,在嵌入式查询中,我更喜欢后一种语法。