2017-12-14 2 views
0

によってオブジェクトリスト。例えばそれは価格のような値を含んでいます。私は価格に基づいてリストをグループ化したい。グループでは、私が「SampleXML」の値に基づいてグループにリストをしたい​​ <p> </p>下回るように見えるオブジェクトのリストをした辞書値

同じものを実装する方法。私はコードの下で試してみましたが、キーでリストを区切ります。私は一意の記録が必要です。

Dictionary<string, List<test>> result = Obj.LstTest 
    .GroupBy(x => x.SampleXML["Price"]) 
    .ToDictionary(g => g.Key, 
       g => g.ToList()); 

上記のコードは価格に基づいてリストを生成します。例えば3種類の価格のレコードが6つある場合、上記コードは3つの結果を返しますが、リストにはそれぞれ2つのレコードが含まれます。

価格が空白の場合

EDITは、それが3回の記録であり、(そのまま)すべての価格は、リストの3項目が含まれています持っていない場合であるグループでは無視する必要があります。

何か助けていただければ幸いです。

+0

'g.FirstOrDefault()' 'に変更しg.ToList()'と結果は '辞書<文字列、テスト> result' –

+0

である必要があり、私は混乱している、あなたは、グループのものにしたいと言います価格で。あなたの例では、3つの異なる価格を持つ6つのアイテムがあり、それぞれ2つの3つのグループにグループ化されています。これはあなたが望むものではないようです...あなたは出力として正確に何をしたいですか?おそらく、サンプル入力と出力を提供して、必要なものを明確にする必要がありますか?たとえば、同じ価格の商品が一緒にリストに並ぶように、リストを並べ替えるだけですか?あなたが正しくあなたを読んでいるなら、あなたは明らかにそれをグループに分けたくはありません。 – Chris

+0

@Chrisあなたのお返事ありがとうございます。リストには6個のアイテムがあります。 item1とitem2はprice $ 2、item3、item4はprice $ 3、item5、item6はprice $ 4です。結果のリストには3つの項目を含むリストが含まれます。 item1、item3、およびitem5です。もし私が必要であれば私は質問を更新できるようにまだ明確ではないことを教えてください。 – user2645738

答えて

0

編集:まだテストのリストとして結果を持っているためにヴィッキーS編集 に基づいて:

List<test> list = new List<test>(); 
List<test> result = new List<test>(); 
result = list.GroupBy(x => x.SampleXML["Price"]).Select(g=>g.FirstOrDefault()); 

編集:空の価格の値、あるいは全く価格キーでSampleXMLを持ってテストを含めるには、 。

まず、「価格なし」でテストを分割し、それらをグループ化する「価格」の値を持つテストから最終結果に含める必要があります。私の最初の答えとして「価格」の値を持つ

var emptyPrice = list.Where(l => !l.SampleXML.ContainsKey("Price") || l.SampleXML["Price"] == string.Empty).ToList(); 
var withoutEmptyPrice = list.Where(l => l.SampleXML.ContainsKey("Price") && !string.IsNullOrEmpty(l.SampleXML["Price"])); 

その後、我々はするグループをテストします。

var resultWithEmptyPrice = withoutEmptyPrice.GroupBy(x => x.SampleXML["Price"]).Select(g => g.FirstOrDefault()).ToList(); 

最後に、私たちの結果に「価格なし」テストを追加します。

resultWithEmptyPrice.AddRange(emptyPrice); 
+0

お返事ありがとうございます。これは動作していますが、辞書ではなく最終結果をリストとして取得する方法を教えてください。 – user2645738

+0

@ user2645738、最新の回答をご覧ください。 –

+0

これはまだ私に辞書を与える。とにかく私は最終的な出力(resultList)を得ることができます – user2645738

関連する問題