【发布时间】:2015-06-19 13:57:43
【问题描述】:
我有一个名为 admin 的用户,他有一个公司列表。我想返回拥有一个或多个相同公司的用户列表。我正在使用此查询使用 Linq,但我不确定它为什么不起作用。我不太明白 .Any() 的作用,但如果我不包含它,程序就会出现语法错误。这是我的尝试:
public List<User> GetUsers(User admin)
{
return Users.Where(user=>user.Companys.Intersect(admin.Companys)).Any()).ToList();
}
【问题讨论】:
-
你尝试的结果是什么?
-
一个空列表。我完全不确定如何调试该语句。
-
列表
Companys是什么类型的?如果是List<Company>Company需要覆盖Equals和GetHashCode或者实现IEquatable<Company>。您还可以创建一个自定义IEqualityComparer<Company>,您可以在Intersect的重载中使用它。 -
既然你已经添加了
database标签,我想它可以帮助你:msdn.microsoft.com/en-us/library/bb301437(v=vs.110).aspx -
@TimSchmelter - _ 需要覆盖
Equals_ 这在很大程度上取决于底层系统。对于 Linq-to-Objects,正常的引用等于应该足够了。
标签: c# database linq list intersect