gpt4 book ai didi

c# - 使用 UNION、INTERSECT 或 EXCEPT 运算符组合的所有查询在其目标列表中必须具有相同数量的表达式

转载 作者:行者123 更新时间:2023-11-30 22:47:58 27 4
gpt4 key购买 nike

我有一个 linq to sql 查询,我必须在其中执行联合两组记录。而且我没有相同数量的字段,所以添加了 null

例如我的伪代码是

var Values=( from c in containers

some joins
select new PValues

{
regionid=r.regionid,

roomid=r.roomid,

floorid=r.floorid,

maxarea=r1.maxarea,

minarea=r1.minarea,

avgarea=r1.avgarea,

maxheight=r1.maxheight,

minheight=r1.minheight

})
.union

( from c in containers

some joins

select new PValues

{ regionid=j.regionid,

roomid=j.roomid,

floorid=j.floorid,

maxarea=null,

minarea=null,

avgarea=null,

maxheight=j1.maxheight,

minheight=j1.minheight

})

在谷歌搜索几个小时后,我开始明白这是 3.5 框架中的错误。

现在我想检索结果。我怎么做我尝试将框架分成两个单独的可查询

var a= first query

var b =second query

ilist result =a.union b

这也会导致同样的错误。

我应该如何形成它

提前致谢

问候盒马

最佳答案

这很可能是 LINQ to SQL 的一个已知问题的结果。当一个列值被引用两次时,它会从结果集中得到优化(即使您可能需要它来使并集对齐)。

最通用的解决方法是使用 let 语句:

var Values=(
from c in containers
some joins
//You'll need one let statement for each COLUMN, even if they share a value.
let maxAreaValue = null
let minAreaValue = null
let avgAreaValue = null
select new PValues
{
regionid=j.regionid,
roomid=j.roomid,
floorid=j.floorid,
maxarea=maxAreaValue,
minarea=minAreaValue,
avgarea=avgAreaValue,
maxheight=j1.maxheight,
minheight=j1.minheight
});

更多信息:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=355734
http://slodge.blogspot.com/2009/01/linq-to-sql-and-union-all-queries.html
SqlException about UNION, INTERSECT and EXCEPT

关于c# - 使用 UNION、INTERSECT 或 EXCEPT 运算符组合的所有查询在其目标列表中必须具有相同数量的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2021861/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com