使用linq在列表中搜索字符串

Vij*_*ana 3 c# linq

我有一份清单 List<string> Rank

列表中的项目排名是

"FF"
"ABC"
"CC"
"FF"
"FF"
Run Code Online (Sandbox Code Playgroud)

我想要一个linq查询返回值,如果存在及其计数,假设如果我搜索"FF"然后它应该返回

value: ff
count: 3
Run Code Online (Sandbox Code Playgroud)

目前我正在使用此查询来查找匹配项

var match = Rank.FirstOrDefault(s => s.Contains("FF"));
Run Code Online (Sandbox Code Playgroud)

并且此查询将相同的值分组并为其分配计数.

var f = Rank.GroupBy(x => x).Select(g => new { Value = g.Key, Count = g.Count() });
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它返回给我完整列表,它看起来像where子句没有

var f = Rank.GroupBy(x => x).Select(g => new { Value = g.Key, Count = g.Count() }).Where(s => Rank.Contains("FF"));
Run Code Online (Sandbox Code Playgroud)

任何人都可以知道为什么第三个查询不起作用?

Ond*_*cek 6

这几乎是正确的

var f = Rank.GroupBy(x => x)
            .Select(g => new { Value = g.Key, Count = g.Count() })
            .Where(s => Rank.Contains("FF"));
Run Code Online (Sandbox Code Playgroud)

只需更改结尾,以便查询新创建的匿名对象

var f = Rank.GroupBy(x => x)
            .Select(g => new { Value = g.Key, Count = g.Count() })
            .Where(s => s.Value == "FF");
Run Code Online (Sandbox Code Playgroud)