【发布时间】:2010-10-13 15:28:48
【问题描述】:
有人可以帮我解决这个例外吗?我不明白它的含义或如何解决它...这是一个带有以下消息的 SqlException:
使用 UNION、INTERSECT 或 EXCEPT 运算符组合的所有查询必须在其目标列表中具有相同数量的表达式。
我在伪代码中运行查询时得到它,如下所示:
// Some filtering of data
var query = data.Subjects
.Where(has value)
.Where(has other value among some set of values);
// More filtering, where I need to have two different options
var a = query
.Where(some foreign key is null);
var b = query
.Where(some foreign key is not null)
.Where(and that foreign key has a property which is what I want);
query = a.Union(b);
// Final filter and then get result as a list
var list = query
.Where(last requirement)
.ToList();
如果我删除 a.Union(b) 部分,它会毫无例外地运行。所以我知道错误在那里。但为什么我会得到它?我该如何解决?我在这里做的事情太疯狂了吗?我是否误解了如何使用 Union 的东西?
基本上我所拥有的是一些实体,它们具有其他实体的外键。我需要获取所有将外键设置为null 或该外国实体满足某些要求的实体。
【问题讨论】:
-
这是一个 SqlException。我更新了问题=)
-
您确定没有任何查询投射任何内容(选择)?我没有遇到这个,但现在我不记得我所做的联合是 linq2sql 还是针对已经检索到的数据:(
-
但我不明白这应该是一个问题,因为没有联合查询可以正常工作。意思是,它拥有所需的一切,并且不会因为缺少值等而失败。我之前已经遇到过这个错误,这不是它:p
-
重新提问;是的,是的。都整理好了吗?我是AFK...
-
(那条评论属于你的答案吗?)
标签: c# sql linq-to-sql