我有一个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
等......每个州和该州的员工人数。
答案 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]++;
}