创建数组或列表以计算值

时间:2018-05-06 07:25:20

标签: c# .net arrays arraylist

我想计算关联数组中的项目。我写了一小段代码,但现在我认为它不会起作用。我应该采用什么策略?

我创建了一个类

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
....

2 个答案:

答案 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并创建一个包含属性itemNameitemCount的匿名类。存储在列表result中的每个匿名对象都包含项目名称和项目计数。

var result = items.GroupBy(item => item)
                  .Select(group => new
                   {
                       itemName = group.Key,
                       itemCount = group.Count()
                   }).ToList();
相关问题