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>();

我试图在 Lookup 中获取不同的结构计数,其中结构为键,结构计数为值。

目前我有

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 回答