如何获取多个集合的交集但忽略不相交的集合

时间:2013-07-22 20:05:54

标签: sql database linq set set-theory

您好我希望从表中获取元素,其中我感兴趣的元素依赖于用户选择的多个变量,这些变量包括单选按钮下拉列表和选择列表。每个变量将根据表格确定我想要的Ids。

我需要能够忽略不相交或空的变量。

这是一个例子

Set A = {1,2,3,4,5}
Set B = {2,5,6,7,8}
Set C = {Cat, Dog}

交叉口B交叉口C == {}

但我需要答案{2,5}

有没有办法在不使用条件语句的情况下从这些集合中获取此信息?我有很多变量,如果可能的话,我想在一个陈述中这样做。

由于

2 个答案:

答案 0 :(得分:0)

你会想要这样的东西:

var results =
  from x in X
  from y in Y
  where x == y || X.All(item => !Y.Contain(item))
  select x;

基本思想是:如果存在任何交叉点,则包括交叉点;如果不存在交集,则包括所有项目。

答案 1 :(得分:0)

我通过将每个表的不同元素作为List来获得这个工作。

接下来,我创建了一个类型

的字典列表

每次我找到一个新对象时,我都会单独浏览每个列表。如果对象已经存在,我增加了该对象的计数值。

之后我在字典中找到了最大值int Max。

然后我从字典中选择了计数与Max匹配的对象

我本来希望做一些更清洁的事情,但是嘿它有效。这对我来说很好,我只是在开发原型。