0
我試圖將一些VB代碼到C#。下面的VB.Net代碼正在工作。不能lambda表達式VB .NET轉換爲C#
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 })
{
....
}
我已經嘗試了幾個在線coverters但不要成功轉換。我已閱讀MSDN的C#等效https://msdn.microsoft.com/en-us/library/bb545971.aspx,但我似乎仍然無法得到這個工作。
的當前錯誤是
無法轉換lambda表達式鍵入「System.Collections.Generic.IEqualityComparer」,因爲它不是一個委託類型
閱讀上的錯誤給了我一些建議但我仍然收到錯誤轉換。我不知道還有什麼我可以嘗試,因爲我已經嘗試了將每個組分割到它自己的部分的組合,但類似的錯誤彈出。任何人都可以看到我的錯在哪裏?
謝謝你 - 我第一次嘗試列出的代碼部分解決錯誤(儘管沒有能夠全面測試它尚未)。我看不出你會在哪裏創建GroupInfo(它在Select子句中)?我已經修改了原來的崗位包括我離開只是爲了保持代碼的短If語句,但在後面的代碼中使用它 – Computer
@Computer'GroupInfo'在C#版本是一個匿名類型。在命名該類型時沒有太多用處,因爲它始終可以通過創建的組的「Key」屬性進行恢復。我甚至不確定c#語法是否允許命名您正在分組的匿名類型(我不記得曾經這麼做過),現在我無法測試它。 – InBetween
是不是選擇'.Select(group => new {group.Key,group});'冗餘? – Magnus