0

<string, double>リストの各行について、2 つの文字列プロパティと辞書プロパティを含む展開されたリストで本質的に構成されるオブジェクトから情報を抽出できるようにする LINQ コードを作成しようとしています。.

GroupBy、Select、Sumのさまざまな組み合わせを試し、他のスレッドで同様のものを探しましたが、他のすべての辞書関連の質問には複雑なレイヤーがほとんどないようです。

私の目標は、List オブジェクト内のデータを最初の文字列プロパティでグループ化し、ステップ 1 のグループ化された文字列ごとに辞書エントリの 1 つを小計することです。次に、グループ化された文字列によって辞書から上位 5 つの小計を取得したいと考えています。 step1から。

        var result = List<ListObject>
            .Where(i => i.string2 == "June")
            .GroupBy(i => i.string1)
            .Sum(i => i.Sum(s => s.Values.TryGetValue("Value1",0.0))
           .Take(5));

Also adding the ListObject definition as requested

public class ListObject{
    public string string1{ get; set; }
    public string string2{ get; set; }

    public Dictionary<string, double> Values { get; set; }

}

4

2 に答える 2

0

質問を正しく読んでいる場合、次のようなものを探している可能性があります。

var los = new List<ListObject>();
string sumField = "Value1";

var result = los
    .Where(lo => lo.string2 == "June")
    .GroupBy(lo => lo.string1)
    .Select(g => new {
        Key = g.Key,
        Total = g
            .Where(x => x.Values.ContainsKey(sumField))
            .Sum(s => s.Values[sumField]),
    })
    .OrderByDescending(t => t.Total)
    .Take(5);
于 2013-06-13T21:17:54.373 に答える
0

次のような意味です。

someEnumerable.GroupBy(e => e.SomeDictionary.Values.Sum());
于 2013-06-13T17:32:59.850 に答える