创建字典以显示来自特定国家/地区的员工数量

时间:2015-10-08 22:28:07

标签: c# linq dictionary

我有一个linq对象说"员工"。

我正在尝试获取员工列表中每个员工的居住状态并创建字典(键,值)。其中Key是列表中存在的状态,值是列表中出现的时间。

到目前为止: -

 foreach(var elem in Employees)
            {
                var stateDictionary = new Dictionary<string, object>();
                stateDictionary["State"] = elem.State;

                Console.Write(stateDictionary["State"]);
            }

这将仅存储从员工读取每个元素的最后一次的State名称。

如何继续实现我的目标?

最终结果应该让我说: -

MN - 5 CA - 2 或 - 33 WA - 21

等......每个州和该州的员工人数。

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用LINQ。以下语句将创建一个字典,其中state为key,每个州的雇员数为value:

Employees.GroupBy(e => e.State).ToDictionary(g => g.Key.State, g => g.Count());

如果你想保持强制性方法,这将有效:

var stateDictionary = new Dictionary<string, int>();
foreach (var e in Employees)
{
    if (!stateDictionary.ContainsKey(e.State)) stateDictionary.Add(e.State, 1);
    else stateDictionary[e.State]++;
}