如何比较一个列表中的对象?我重载了==
比较两个字符串的运算符:
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); }
查询很简单 - 它通过电子邮件对用户进行分组,并选择多个用户(即那些用户具有相同的电子邮件)的组.
您可以在没有任何运算符重载的情况下使用分组(我认为这是个坏主意):
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); }
查询很简单 - 它通过电子邮件对用户进行分组,并选择多个用户(即那些用户具有相同的电子邮件)的组.