2016-05-27 20 views
1

2つのリストがあり、キー値のペアのタイプの辞書を作成したい キー=各固有の参照(タイプstring)の文字列 値= list2のサブリストwhere list2 uniquereferenceがキーに等しい私は表現の宣言でこれを行うことができますどのように私はこの辞書を作成して値式宣言でキーを使用

var dictionary = listA.ToDictionary(x => x.StringProperty, y => List2.Where(x => x.Reference == x.StringProperty) 

のようなエッセンスでそれをやりたい

(値は、タイプリストの場合)?現在、この辞書を作成する方法はありますか?

私が望むものを生成するには、このメソッドを作成する必要がありました。

private Dictionary<string, IEnumerable<JobEntity>> Dictionary(IEnumerable<JobLinkedBag> jobLinkedBags, IEnumerable<JobEntity> jobs) 
    { 
     if (jobLinkedBags == null || jobs == null || jobLinkedBags.Count() == 0 || jobs.Count() == 0) 
      return null; 

     var dictionary = new Dictionary<string, IEnumerable<JobEntity>>(); 

     for (int i = 0; i < jobLinkedBags.Count(); i++) 
     { 
      var thisBag = jobLinkedBags.ElementAt(i).LuggageCode; 
      var jobsForThisBag = jobs.Where(x => x.LuggageCode == thisBag); 
      dictionary.Add(thisBag, jobsForThisBag); 
     } 
     return dictionary; 
    } 
+1

質問は少し不明ですが、私は "このインデックス参照"とは何かを理解していません...いくつかのサンプルデータを提供し、少し詳細を説明できますか? –

+0

私は式を更新しました。うまくいけばそれはより意味がある。 – TheAkhemist

+0

'List2.Where'-lambdaでは、' x.StringProperty'の代わりに 'y.StringProperty'を意味すると思いますか? –

答えて

1

1:式にあなたの方法の1翻訳は次のようになります。

Expression<Func<IEnumerable<JobLinkedBag>, IEnumerable<JobEntity>, Dictionary<string, IEnumerable<JobEntity>>>> expression = 
     (jobLinkedBags, jobs) => (jobLinkedBags == null || jobs == null || jobLinkedBags.Count() == 0 || jobs.Count() == 0) 
       ? null 
       : jobLinkedBags.ToDictionary(
          jlb => jlb.LuggageCode, 
          jlb => jobs.Where(job => job.LuggageCode == jlb.LuggageCode)); 

いくつかの危険な部分があることと同じことを行います表現がありますこのコードで:

  • このコードは、カウントを決定するために(引数jobLinkedBagsjobs数回を列挙し、それらをフィルタリングするため)、これは具体的にどのような具体的なIEnumerableの実装に応じて問題を引き起こす可能性があります
  • 値としてIEnumerableを持つ辞書を構築します。この列挙体もまた実行される。したがって、この列挙のソースは、最終的にそれを反復処理するときに有効であることを確認する必要があります。
+0

かなり、iveは私がdictonaryを作成するために使用したメソッドをアップロードしていません。同じパラメータを使って同じことをすることができる式はありますか? – TheAkhemist

+0

@TheAkhemistが私の答えを更新しました。延期された実行に注意してください! –

+0

回答ありがとうございました。 – TheAkhemist

関連する問題