加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 关于UNION,INTERSECT和EXCEPT的SqlException

发布时间:2020-12-15 17:40:22 所属栏目:百科 来源:网络整理
导读:有人可以帮我解决这个例外吗?我不明白它意味着什么或如何解决它…这是一个SqlException,带有以下消息: All queries combined using a UNION,INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists. 我在伪代码中
有人可以帮我解决这个例外吗?我不明白它意味着什么或如何解决它…这是一个SqlException,带有以下消息:

All queries combined using a UNION,INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

我在伪代码中运行查询时得到它,如下所示:

// 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)部分,它会毫无例外地运行.所以我知道错误就在那里.但为什么我会得到它?我该如何解决?我在这里做的事太疯狂吗?我误解了如何使用联盟的东西吗?

基本上我所拥有的是一些具有其他实体的外键的实体.我需要将所有将该外键设置为null的实体或该外来实体满足某些要求的实体.

解决方法

由于这看起来像生成的SQL的问题,您应该尝试使用SQL事件探查器,或使用 this code for DebuggerWritter class将SQL写入Visual Studio中的输出窗口.

SQL错误通常是由为UNION检索的字段对于2个查询不同而引起的.例如,如果第一个查询可能有3个字段,但第二个查询有4个字段,则会发生此错误.因此,在这种情况下,看到生成的SQL肯定会有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读