2016-09-02 11 views
0

私はアイテムのリストを持っていますList<string> keysList<Objects> objオブジェクトには別のオブジェクトがある複数のアイテムがあり、キーと同じ値の名前を持つキーホルダーと呼ぶことができます。リスト<string>とリスト<Object>を辞書に挿入

List <string> key = {"a","b"} 

List <Object> obj = object with items {name, id, IEnumerable<keyholder>} 

keyholder has value name which can be the same with key. 

私が作成したい

key.ToDictionary(e=>e, f=> obj.Where(obj.keyholder.Where(keyholder.name == key)); 

私はkeyholder.nameがキーと同じ値を持つ場合にのみ、辞書にオブジェクトを追加します。

+0

のリストにあることができるので、あなたの質問があいまいである含まれているキーワードを使用して、それを解決しました。 'keyholder'と' obj'とは何ですか?どこから来ているのですか –

+0

達成しようとしていることを理解したければもっとコードを表示する必要があります –

+0

私のコードを編集しようとしましたが、接続はかなり悪いです 基本的には - リスト< key >は{ 、 "B"、 "C"}とリストは、そのうちの一つが別のオブジェクトのキーホルダーと呼ばれるアイテムを持っている OBJ { 名 ID キーホルダー:{ID、名前= { "A"} } 私は追加したいですobj ist 'List 'からキーホールダーの名前が同じであるオブジェクトだけが –

答えて

0

私はあなたたちからもらった助けを借りて、私は、IEnumerableを項目

key.ToDictionary(k => k, 
       k => obj.Where(g => g.keyholder.Contains(k)).ToList()); 
1

構文が正しくありません。 Whereはラムダ関数を引数として取ります。

keyholderは、あなたがDictionary<TKey, TValue[]>にあなたのリストを変換することができ、与えられたキーで複数の値を格納することができた場合:

key.ToDictionary(k => k, 
       k => obj.keyholder.Where(x => x.name == key).ToArray()); 

それはキーとしてkeyからすべての項目を持つDictionaryを返す、との配列ます対応するnameを有するobj.keyholderからの値。

obj.keyholderList<TValue>である必要があります。TValuenameのタイプのタイプです。 objectにはnameプロパティがないため、この機能をList<object>に適用することはできません。

+0

これはいいですね、私はそれを試してみましょうとu。 –

+0

... objは 'List ' ... – DarkSquirrel42

+0

はい私はobjから直接keyholderを呼び出すことはできません、obj.whereを使用する必要があります –

関連する問題