2016-07-11 8 views
-1

私は資産としての情報を含む辞書を1つ持っています。そして私はキーとしてid値を抽出し、LINQを使ってLISTに値として値を作成したいと思います。以下は例です。私はクラスC#、1つのキー値と他のキー値を辞書の値として読み取る<string、string>

public Hits[] hits { get; set; }; 
hits.SelectMany(v => v.Source.Where(s => s.Key == "ObjId")).Select(s => s.Value).ToList() 

、今、私は以下のように一つの値だけを読み取ろうとしました

001:11-09-2015 

002:17-09-2015 

としてList<string,string>に読む必要が

Dictionary[0]= 
    id:001, description:Test, name:SomeName, createdOn:11-09-2015 

Dictionary[1]= 
    id:002, description:Test2, name:SomeName2, createdOn:17-09-2015 

はここにある:

public class Hits 
{  
    [DataMember(Name = "_source")] 
    public Dictionary<string,string> Source { get; set; } 
} 

誰も私を提案することはできますこれを達成する方法は?

+1

を持つことができます。 'Dictionary >が欲しいと思いますが、あなたのクラスは表示されておらず、' searchResult.srResponse.Hits'や 'searchResult.srResponse.Hits.Hit'は何も表示されていません。 –

+0

@Tim、今はっきりしていますか? – Hanumantha

+0

あなたは結果として 'List 'が存在すると思われますが、存在しません。あなたは 'List​​'または 'Dictionary ' まだクリアされていない –

答えて

1

リストのようなものはありません。リストには1つのタイプがあります。複数の型のリストが必要な場合は、これらの型を保持するクラスを作成するか、タプルを使用します

Linqの場合は、すでに項目が辞書にありますので、キーが等しい場所を参照する必要はありません。辞書から。

次は、idフィールドとcreatedOnフィールドを含むList<Tuple<string, string>>です。あなたが望んでいたようだった。

hits.Select(x => new Tuple<string, string>(x.Source["id"], x.Source["createdOn"])).ToList(); 

別の方法としては、非常に不明確

List<string> = hits.Select(x => string.Format("{0}:{1}", x.Source["id"], x.Source["createdOn"])).ToList(); 

または

Dictionary<string, string> = hits.ToDictionary(x => x.Source["id"], x => x.Source["createdOn"])); 
+0

James、 – Hanumantha

関連する問題