【发布时间】:2011-01-28 07:06:21
【问题描述】:
我想用 LINQ 集合操作的 Uber-Coolness 来表达以下内容:
foreach (Group group in groups)
{
if (user.Groups.Contains(group))
{
assignedGroups.Add(group);
}
else
{
availableGroups.Add(group);
}
}
我认为它应该是实现这一目标的两条线:
var assigned = user.Groups.Intersect(groups);
var available = groups.Except(user.Groups);
每当我运行此示例时,foreach 方法都会正确填充我的列表,而 set 操作会导致分配的空列表和已填充的可用列表。 我认为这一定是关于相等性检查的问题,但 Contains() 正在工作的事实证明这是错误的。 谁能帮我看看我的误解?
IEnumerable groups 也是 LINQ 查询的结果,以防万一该信息有帮助...
【问题讨论】:
-
Contains是你自己的方法,还是提供的? -
提供,这里没有个人风格
-
对于交叉点没有任何区别,对于排除我没有尝试过,因为那没有任何意义。
标签: c# linq intersection