2017-02-09 5 views
0

VBコードをC#に変換しようとしています。以下のVB.Netコードが動作しています。ラムダ式VB.netをC#に変換できません

GroupCategoriesは、グループ化されたカテゴリのリストです。グループ化されたカテゴリは、一部のデータを取得してリストに格納するだけです。 C#で変換する

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 

私の試み:私はいくつかのオンラインcovertersを試みたが成功した変換いけない

foreach (var Groups in from g in GroupCategories group GroupInfo by new {g.Id, g.Name } into SubCategories select new { GroupInfo, SubCategories }) 
{ 
    .... 
} 

。 IveはそのC#相当のhttps://msdn.microsoft.com/en-us/library/bb545971.aspxのMSDNを読んでいるが、私はまだこれが働くように思えない。

現在の誤差がある

、それは誤りで読むデリゲート型

ではないので、私にいくつかの勧告を与える「System.Collections.Generic.IEqualityComparer」を入力するラムダ式を変換できません。しかし、私はまだ変換エラーを取得しています。私は自分のセクションに各グループの分割を組み合わせてみましたが、同様のエラーがポップアップするので、私は何を試すことができるのか分かりません。誰でもここで間違っているのを見ることができますか?

答えて

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

、私は後者の構文を好む埋め込まれたクエリで。

+0

ありがとうございます - 私は最初にエラーを部分的に解決したコードを試してみましたが(まだ完全にはテストできませんでしたが)。 GroupInfo(Select節にあります)をどこに作成したのかわかりませんでしたか?私は元のポストを修正して、コードを短くして後でそのコードで使用するIf文を追加しました – Computer

+1

@ Computerの 'GroupInfo'はC#版では匿名型です。作成されたグループの 'Key'プロパティを通じて常に回復可能であるため、型の名前付けにはあまり使われません。私はc#構文であなたがグループ化している匿名型の名前付けを許可しているかどうかはわかりません(私は今までそれを思い出していません)。 – InBetween

+0

選択されていない '.Select(group => new {group.Key、group});' redundant? – Magnus

関連する問題