C# 将列表转换为字典,但给出列表中重复时间最长的名称
嗨,我正在将列表转换为字典。名单上有员工的名字。我想将其转换为字典以获得更好的性能。但我在将列表转换为字典时出错,表示已经添加了密钥。我需要通过使用字典获得不止一次的名字的计数。以下是我的清单C# 将列表转换为字典,但给出列表中重复时间最长的名称,c#,list,dictionary,C#,List,Dictionary,嗨,我正在将列表转换为字典。名单上有员工的名字。我想将其转换为字典以获得更好的性能。但我在将列表转换为字典时出错,表示已经添加了密钥。我需要通过使用字典获得不止一次的名字的计数。以下是我的清单 List<String> names = new List<String>{ "Navin Kabra", "Amit Paranjape",
List<String> names = new List<String>{
"Navin Kabra",
"Amit Paranjape",
"Navin Kabra",
"Amit Paranjape1",
"Navin Kotkar",
"Gaurav Kotkar"};
列表名称=新列表{
“纳文·卡布拉”,
“Amit Paranjape”,
“纳文·卡布拉”,
“Amit Paranjape1”,
“Navin Kotkar”,
“Gaurav Kotkar”};
在这里,我需要将列表转换为字典。使用字典,我想找到出现在列表中的名字。我尝试使用linq将列表转换为字典,但已出现键错误
上述列表的结果将是Navin Kabra
。
请告知我如何进行此操作。按名称分组并计算重复项目:
var dict = names.GroupBy(o => o).ToDictionary(o => o.Key, o => o.Count());
按名称分组并计算重复项:
var dict = names.GroupBy(o => o).ToDictionary(o => o.Key, o => o.Count());
如果您的唯一目标是获取具有最大计数的项目,则无需创建
字典
。只需使用以下LINQ:
var MaxName = names.GroupBy(x => x, y => y.Count()).OrderByDescending(g => g.Count()).Select(g => g.Key).First();
如果您的唯一目标是获取具有最大计数的项目,则无需创建
字典
。只需使用以下LINQ:
var MaxName = names.GroupBy(x => x, y => y.Count()).OrderByDescending(g => g.Count()).Select(g => g.Key).First();
你的组员错了。第二个参数将有两个lambda参数,以便对第二个参数调用Count()。否则,它是一个元素选择器,将调用字符串本身返回其长度的Count()扩展方法。我认为您只需要执行
GroupBy(x=>x).OrderByDescending(…)
否则您需要GroupBy(x=>x,(x,y)=>new{Key=x,Count=y.Count()).OrderByDescending(x=>x.Count)。First().Key
您的分组依据是错误的。第二个参数将有两个lambda参数来调用Count()在第二个参数上。否则,它是一个元素选择器,将调用字符串本身的Count()扩展方法返回其长度。我认为您只需要执行GroupBy(x=>x)。OrderByDescending(…)
否则您将需要GroupBy(x=>x,(x,y)=>new{Key=x,Count=y.Count()).OrderByDescending(x=>x.Count)。First().键