【问题标题】:Check for duplicates in array of custom type using Linq in C# [duplicate]在 C# 中使用 Linq 检查自定义类型数组中的重复项 [重复]
【发布时间】:2016-07-08 13:51:04
【问题描述】:

大家好。

假设我有一个自定义类型:

public struct Group {
    public string GroupName;
    public int someInt;
}

假设我有一个这种类型的数组:

public Group[] Groups;

我想检查Groups 是否有两个或多个Group 具有相同GroupName 的项目。在伪代码中它看起来像:

if (Groups has two or more Group items with the same name) {
    // we have a problem
}

如果有人帮忙,我会很高兴。提前致谢!

【问题讨论】:

标签: c# linq


【解决方案1】:

你可以这样做:

if(Groups.GroupBy(e=>e.GroupName).Count()>1)
{
 //...
}

【讨论】:

  • 我真的认为这会起作用,但无论有多少 Group 中具有相同 GroupName 的 Group 项目,它总是等于 1。请检查您的代码并回复我 :(
  • 您能否在问题中添加您用于测试的数据集合?
  • @Tayab,信不信由你,但这段代码应该也能正常工作!
  • @Tayab,现在我看到你标记为正确的答案,我意识到你真正需要知道的是如果有一些重复的组,我想你想检查你的列表的组属于同一组
  • @octavioccl 不用担心,我没有更好地解释可能是我的错。无论如何,感谢您的快速回答,你是个好人:)
【解决方案2】:

我认为可能有更好的解决方案,但您可以试试这个。

var results = (from p in Groups
              group p by p.GroupName into g
              select new { GroupName = g.Key, Total = g.Count 
              }).Where(c=>c.Total>1).ToList();

If(results.Count()>1)
{

}

【讨论】:

    【解决方案3】:
    if(Groups.GroupBy(e=>e.GroupName).Count() < Groups.Count)
    {
        // we have a problem
    }
    

    【讨论】:

    • 感谢您的回答,成功了!祝你有美好的一天,我爱你:)
    猜你喜欢
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2019-06-28
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多