C#循环遍历一个列表并比较对象

 我要公道2602932023 发布于 2023-02-06 12:00

如何比较一个列表中的对象?我重载了==比较两个字符串的运算符:

public static bool operator ==(User one, User two)
{
    return one.Email == two.Email;
}

我应该通过列表比较它们之间的比较.我已经提出了一个解决方案,它完成了这项工作,但我希望有更好的方法来实现这一点,使用LINQ或lambda表达式.

foreach (User u in up)
{
    foreach (User u2 in up)
    {
        if (ReferenceEquals(u, u2)) continue;
        if (u == u2) Console.WriteLine("Users {0} and {1} have the same mail.", u.ToString(), u2.ToString());
    }
}

Sergey Berez.. 9

您可以在没有任何运算符重载的情况下使用分组(我认为这是个坏主意):

var userGroups = up.GroupBy(u => u.Email).Where(g => g.Count() > 1);

foreach(var group in userGroups)
{
    Console.WriteLine("Following users have email {0}", group.Key);

    foreach(var user in group)
       Console.WriteLine(user);
}

查询很简单 - 它通过电子邮件对用户进行分组,并选择多个用户(即那些用户具有相同的电子邮件)的组.

1 个回答
  • 您可以在没有任何运算符重载的情况下使用分组(我认为这是个坏主意):

    var userGroups = up.GroupBy(u => u.Email).Where(g => g.Count() > 1);
    
    foreach(var group in userGroups)
    {
        Console.WriteLine("Following users have email {0}", group.Key);
    
        foreach(var user in group)
           Console.WriteLine(user);
    }
    

    查询很简单 - 它通过电子邮件对用户进行分组,并选择多个用户(即那些用户具有相同的电子邮件)的组.

    2023-02-06 12:03 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有