比方说,我有一个像这样的集合:
Apple
Banana
Banana
Apple
Apple
Pear
Banana
Grape
Orange
Pear
Run Code Online (Sandbox Code Playgroud)
如您所见,这些项目中有一些是其中的一部分.我想要的是一个展示物品的集合,以及它的数量.例如,上面的数据将显示如下:
Apple (3)
Banana (3)
Pear (2)
Grape (1)
Orange (1)
Run Code Online (Sandbox Code Playgroud)
我创建了一个班......
public class Quantity<T>
{
public Quantity(T item, int count)
{
Item = item;
Count = count;
}
public T Item { get; private set; }
public int Count { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
我假设可以使用某种Select语句来完成LINQ,这种语句可以投射IEnumerable<T>到IEnumerable<Quantity<T>>...那就是说,我不是最模糊的如何开始: - | ...有任何想法吗?
如果输入是string那么您可以使用以下GroupBy和Select投影.
var result = food.GroupBy(fruit => fruit)
.Select(fruit => new Quantity<string>(fruit.Key, fruit.Count()));
Run Code Online (Sandbox Code Playgroud)