c# - 创建一个数组或列表来计算值
问题描述
我想计算关联数组中的项目。我已经编写了一小段代码,但现在我认为它不起作用。我应该使用什么策略?
我创建了一个类
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
....
解决方案
如前所述,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);
推荐阅读
- javascript - 从具有不同值数组的单个键数组转换键值对
- javascript - 在 GridFS 中将 readStream 转换为 String 时不断出现“未定义”
- blender - procedural mesh creation with blender script
- matlab - 在矩阵的每一行中查找元素的列位置,并存储在矩阵中
- sql-server - SQL Server trigger on a procedure failing
- lua - 尝试在 Lua 中创建对象时出现“尝试索引零值错误”
- java - How does java.util.HashMap.containsValue() work? What is it's time complexity?
- php - Laravel ajax 发布调用失败
- java - 试图用对象填充屏幕
- reactjs - Calling a function not working in react constructor