c# - 如何选择非不同元素及其索引

标签 c# linq

 List<string> str = new List<string>() {
   "Alpha", "Beta", "Alpha", "Alpha", "Gamma", "Beta", "XYZ" };

预期输出:

 String | Indexes
 ----------------------------
 Alpha  | 0, 2, 3
 Beta   | 1, 5

GammaXYZ 不同,因此它们将被忽略。

我通过手动比较字符串来完成此操作。是否有可能以更简单的方式使用 LINQ 来做到这一点?

最佳答案

foreach (var grp in
   str.Select((s, i) => new { s, i })
      .ToLookup(pair => pair.s, pair => pair.i)
      .Where(pair => pair.Count() > 1))
{   
    Console.WriteLine("{0}: {1}", grp.Key, string.Join(", ", grp));
}

关于c# - 如何选择非不同元素及其索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5830730/

相关文章:

c# - 为什么这个带有 Expression<Func<T,bool> 的模拟不匹配?

C# owin web api路由索引页面

c# - ASP.Net WebApi : return data in json and xml formats

c# - Linq - 使用谓词的查询运算符 'Where' 不支持重载

c# - 从 XML、XSD 或 C# 类生成 LINQ DataContext

c# - 如何使用 Linq 对包含集合的集合进行非规范化

c# - 在 dbml 文件中为 LINQ to SQL 生成关联的问题

c# - 将行添加到可编辑的 GridView 后,日期选择器未出现

c# - 表达式树中未发生隐式转换

c# - EF6 : Mapping to ViewModel Reusability