我想计算关联数组中的项目。我写了一小段代码,但现在我认为它不会起作用。我应该采用什么策略?
我创建了一个类
public class itemsList
{
public string itemName;
public int itemCount;
}
计算代码如下(在以下代码中考虑items
数组)
foreach (var item in items)
{
//this is pseudo, I want help in this
if (itemsList.Contain("itemName", item)
itemsList[item].itemCount++;
else
itemsList.Add(item, 1);
}
请注意,此数组稍后会以下列格式更改为json
。
"apples": 10,
"oranges": 4
....
答案 0 :(得分:1)
如前所述,Dictionary<TKey, TValue>
这是一个更好的选择:
private readonly Dictionary<string, int> ItemsDict = new Dictionary<string, int>();
然后您需要做的就是:
string someItemName = "itemName";
if(!ItemsDict.ContainsKey(someItemName))
{
ItemsDict.Add(someItemName, 1);
}
else
{
ItemsDict[someItemName]++;
}
根据您的需要,您可能还希望将某个类用作值:
public class itemsList
{
public string itemName;
public int itemCount;
}
...
private readonly Dictionary<string, itemsList> ItemsDict = new Dictionary<string, itemsList>();
// here we add an object
ItemsDict.Add(someItemName, myItem);
答案 1 :(得分:0)
您可以使用LINQ GroupBy
并创建一个包含属性itemName
和itemCount
的匿名类。存储在列表result
中的每个匿名对象都包含项目名称和项目计数。
var result = items.GroupBy(item => item)
.Select(group => new
{
itemName = group.Key,
itemCount = group.Count()
}).ToList();