2

リストを次のように定義すると

public class ItemsList
{
    public string structure { get; set; }
    public string Unit { get; set; }
    public double Dim { get; set; }
    public double Amount { get; set; }
    public int Order { get; set; }
    public string Element { get; set; }
}

List<ItemsList> _itemsList = new List<ItemsList>();

構造体をキーとして、構造体の数を値として、ルックアップで構造体の個別の数を取得しようとしています。

現時点で私が持っている

var sCount = from p in _itemsList
    group p by p.Structure into g
    select new { Structure = g.Key, Count = g.Count() };

ただし、これはデータを匿名型として返すだけです。を使用してこれをルックアップに入れるための構文を教えてください.ToLookup

4

1 に答える 1

7

私はあなたが実際に欲しいと思う

var lookup = _itemsList.ToLookup(p => p.Structure);

どのグループのアイテムもカウントできます。

foreach (var group in lookup)
{
    Console.WriteLine("{0}: {1}", group.Key, group.Count());
}

...しかし、各グループ内の値も取得しています。

本当にカウントだけが必要な場合は、ルックアップがまったく必要ないように思えます-次のDictionaryように取得できる が必要です。

var dictionary = _itemsList.GroupBy(p => p.Structure)
                           .ToDictionary(g => g.Key, g => g.Count());
于 2012-10-17T22:37:47.280 に答える