使用LINQ C#获取最多的字符串值

Use*_*987 -1 c# linq asp.net list count

我有一个字符串列表,我按照它们在列表中的出现进行分组,如下所示(其中key是这些字符串的列表):

  mostCommonKeywords = key.GroupBy(v => v)
                            .OrderByDescending(g => g.Count()) // here I get the count number
                            .Select(g => g.Key)
                            .Distinct()
                            .ToList();
Run Code Online (Sandbox Code Playgroud)

我现在要做的就是当它们被整理出来时,我想得到它们的数量,因为LINQ可以清楚地区分它们的数量并将它们排序......我怎样才能得到列表中每个字符串的计数出现? ?

编辑:

假设我的计数值看起来像这样:

124
68
55
48
32
19
13
10
Run Code Online (Sandbox Code Playgroud)

我不能简单地将这个值的1加到一个名为"Count"的变量中,如@octavioccl建议的那样.我显然必须将它们存储在某种列表或其他内容中......

oct*_*ccl 8

使用Select和以匿名类型投影:

 var result=key.GroupBy(v => v)
               .Select(g => new {g.Key, Count=g.Count()})
               .OrderByDescending(e => e.Count) 
            // .Distinct()// Don't need this call
               .ToList();
Run Code Online (Sandbox Code Playgroud)

更新

您还可以使用DTO投影查询:

public class CustomDTO
{
  public string Key{get;set;} // Change the type in case you need to
  public int Count{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

那么,您的查询将是:

 var result=key.GroupBy(v => v)
               .Select(g => new CustomDTO{Key=g.Key, Count=g.Count()})
               .OrderByDescending(e => e.Count) 
               .ToList();
Run Code Online (Sandbox Code Playgroud)