无法将lambda表达式VB .net转换为C#

时间:2017-02-09 11:04:54

标签: c# linq linq-to-sql

我正在尝试将一些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',因为它不是委托类型

阅读错误给了我一些建议,但我仍然遇到错误转换。我不知道还有什么我可以尝试,因为我尝试了将每个组拆分为自己的部分的组合,但弹出类似的错误。任何人都可以看到我在哪里出错?

1 个答案:

答案 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 });

坦率地说,在嵌入式查询中,我更喜欢后一种语法。