比方说,我有一个像这样的集合:
Apple
Banana
Banana
Apple
Apple
Pear
Banana
Grape
Orange
Pear
正如您所看到的,这些项目中有一些是其中的一部分。我想要的是一个展示物品及其数量的集合。例如,上面的数据将显示如下:
Apple (3)
Banana (3)
Pear (2)
Grape (1)
Orange (1)
我创建了一个班级......
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; }
}
我假设可以使用某种Select
语句来完成LINQ,该语句可以从IEnumerable<T>
投射到IEnumerable<Quantity<T>>
......就是说,我&#39 ;不是最模糊的如何开始: - | ......有什么想法吗?
答案 0 :(得分:5)
如果输入为string
,则可以使用以下GroupBy和Select projection。
var result = food.GroupBy(fruit => fruit)
.Select(fruit => new Quantity<string>(fruit.Key, fruit.Count()));
答案 1 :(得分:1)
您可以使用LINQ提供的GroupBy
方法。它的工作原理是将特定值相同的项分组到单独的集合中。
请参阅以下示例:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="data" name="data">
<tr>
<td colspan="9">
<input type="button" value="Add" name="clone" id="clone">
<input type="button" value="Remove" name="remove" id="remove">
</td>
</tr>
<tr align="center">
<td rowspan="2">N°</td>
<td rowspan="2">Activity</td>
<td rowspan="2">Field1</td>
<td rowspan="2">Resources</td>
<td colspan="2">Dates</td>
<td rowspan="2">Field2</td>
<td rowspan="2">Date 1</td>
<td rowspan="2">Status</td>
</tr>
<tr align="center">
<td>Start Date</td>
<td>End Date</td>
</tr>
<tr name="parent" id="parent">
<td align="center">
<input id="val[]" name="val[]" type="text" value="1" required>
<input id="val[]" name="val[]" type="hidden" value="13256">
</td>
<td align="center">
<input id="val[]" name="val[]" type="text" value="2" required>
</td>
<td align="center">
<input id="val[]" name="val[]" type="text" value="3" required>
</td>
<td align="center">
<input id="val[]" name="val[]" type="text" value="4" required>
</td>
<td align="center">
<input id="val[]" name="val[]" type="text" value="5" required>
</td>
<td align="center">
<input id="val[]" name="val[]" type="text" value="6" required>
</td>
<td align="center">
<input id="val[]" name="val[]" type="text" value="7" required>
</td>
<td align="center">
<input id="val[]" name="val[]" type="text" value="8" required>
</td>
<td align="center">
<input id="val[]" name="val[]" type="text" value="9" required>
</td>
</tr>
</table>
<table>
<tr>
<td>Hello world!</td>
</tr>
</table>
要查看此示例的实际效果,请查看以下.NET fiddle。