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().键