Unino合并集合出错求解,明明都是18列啊

兔子家族-二哥 2017-09-11 04:47:55
var list = (from a in LinqDBContext.Eventinfos
from b in LinqDBContext.GatewaySystemInfo
from c in LinqDBContext.site
from d in LinqDBContext.devices
from e in LinqDBContext.flatpic
from h in LinqDBContext.onlineorg
from dt in LinqDBContext.devicetype
from f in LinqDBContext.firesystype
where a.Gatewayaddress == b.Gatewayaddress && b.siteid == c.siteid && c.orgid == h.orgid && h.orgid == orgid && a.Gatewayaddress == d.Gatewayaddress
&& a.deviceaddress == d.deviceaddress && a.sysaddress == b.Sysaddress && a.sysaddress == d.Sysaddress && e.siteid == c.siteid && e.cFlatPic == d.cFlatPic && a.cAlarmtype == "XX"
&& dt.iDeviceType == d.iDeviceType && dt.tiSysType == f.tiSysType
select new
{
a.Firealarmid,
a.cAlarmtype,
h.orgname,
c.sitename,
a.Gatewayaddress,
vdesc = string.IsNullOrEmpty(f.vSysdesc) ? "" : f.vSysdesc,
deviceaddress = string.IsNullOrEmpty(d.deviceaddress) ? "" : d.deviceaddress,
a.AlarmNum,
vfireroomtel = string.IsNullOrEmpty(h.vfireroomtel) ? "" : h.vfireroomtel,
e.floornum,
d.location,
a.dFirstAlarmtime,
a.dReceivetime,
a.sysaddress,
DeviceTypeName = dt.DeviceTypeName,
imFlatPic = FirePicUrl + e.imFlatPic,
x = string.IsNullOrEmpty(d.fPositionX + "") ? 0 : (float)d.fPositionX / 950,
y = string.IsNullOrEmpty(d.fPositionY + "") ? 0 : (float)d.fPositionY / 500
});
var GateWayList = (from a in LinqDBContext.Eventinfos
from b in LinqDBContext.GatewaySystemInfo
from c in LinqDBContext.site
from h in LinqDBContext.onlineorg.Where(x => x.orgid == c.orgid).Distinct().DefaultIfEmpty()
where a.Gatewayaddress == b.Gatewayaddress && b.siteid == c.siteid &&a.sysaddress==null&&a.deviceaddress==null&&a.cAlarmtype=="XX"
select new
{
a.Firealarmid,
a.cAlarmtype,
h.orgname,
sitename="",
a.Gatewayaddress,
vdesc = "",
deviceaddress = "",
a.AlarmNum,
vfireroomtel = string.IsNullOrEmpty(h.vfireroomtel) ? "" : h.vfireroomtel,
floornum = "",
location = "",
a.dFirstAlarmtime,
a.dReceivetime,
a.sysaddress,
DeviceTypeName = "",
imFlatPic = "",
x = (float)0,
y = (float)0
});
if (GateWayList.Count()>0)
{
list=list.Union(GateWayList.Distinct());
}
float AllCount = list.Count();
这里报错:使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。
...全文
1190 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2017-09-12
  • 打赏
  • 举报
回复
那就真不清楚了,看不出什么问题
  • 打赏
  • 举报
回复
引用 12 楼 hanjun0612 的回复:
你鼠标移到list和GateWayList 看看他们2个分别的类型。 感觉并没什么问题。
if (GateWayList.Count() > 0) { list = list.Union(GateWayList.Distinct()); } 这里编译器都没报错 两个都是 List<Demo> 类型
正怒月神 2017-09-12
  • 打赏
  • 举报
回复
你鼠标移到list和GateWayList 看看他们2个分别的类型。 感觉并没什么问题。
  • 打赏
  • 举报
回复
引用 8 楼 q107770540 的回复:
which version of .net framework are you using? if you are using .net 3.5, try this link: http://blog.sina.com.cn/s/blog_63f3e0060100ja6r.html 此时出现错误:使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。 经检查,发现是.net framework3.5的bug,在.net framework4中已经修复。 但我用的是vs2008+.netframework3.5,不能说改就改。 找了一下,发现了解决方法,就是对所有常量设置变量代替。
督查 我用得VS2015 4.6了都
  • 打赏
  • 举报
回复
引用 9 楼 hanjun0612 的回复:
报了什么错?还是原来的错?
是的还是原来的错
正怒月神 2017-09-12
  • 打赏
  • 举报
回复
报了什么错?还是原来的错?
q107770540 2017-09-12
  • 打赏
  • 举报
回复
which version of .net framework are you using? if you are using .net 3.5, try this link: http://blog.sina.com.cn/s/blog_63f3e0060100ja6r.html 此时出现错误:使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。 经检查,发现是.net framework3.5的bug,在.net framework4中已经修复。 但我用的是vs2008+.netframework3.5,不能说改就改。 找了一下,发现了解决方法,就是对所有常量设置变量代替。
  • 打赏
  • 举报
回复
float AllCount = list.Union(GateWayList.Distinct()).Count(); 这旧报错了
  • 打赏
  • 举报
回复
var list = (from a in LinqDBContext.Eventinfos from b in LinqDBContext.GatewaySystemInfo from c in LinqDBContext.site from d in LinqDBContext.devices from e in LinqDBContext.flatpic from h in LinqDBContext.onlineorg from dt in LinqDBContext.devicetype from f in LinqDBContext.firesystype where a.Gatewayaddress == b.Gatewayaddress && b.siteid == c.siteid && c.orgid == h.orgid && h.orgid == orgid && a.Gatewayaddress == d.Gatewayaddress && a.deviceaddress == d.deviceaddress && a.sysaddress == b.Sysaddress && a.sysaddress == d.Sysaddress && e.siteid == c.siteid && e.cFlatPic == d.cFlatPic && a.cAlarmtype == "火警" && dt.iDeviceType == d.iDeviceType && dt.tiSysType == f.tiSysType select new demo() { Firealarmid= a.Firealarmid, CAlarmtype= a.cAlarmtype, Orgname = h.orgname, Sitename = c.sitename, Gatewayaddress = a.Gatewayaddress, Vdesc = string.IsNullOrEmpty(f.vSysdesc) ? "" : f.vSysdesc, Deviceaddress = string.IsNullOrEmpty(d.deviceaddress) ? "" : d.deviceaddress, AlarmNum=a.AlarmNum, Vfireroomtel = string.IsNullOrEmpty(h.vfireroomtel) ? "" : h.vfireroomtel, Floornum=e.floornum, Location=d.location, DFirstAlarmtime=a.dFirstAlarmtime, DReceivetime=a.dReceivetime, Sysaddress=a.sysaddress, DeviceTypeName = dt.DeviceTypeName, ImFlatPic = FirePicUrl + e.imFlatPic, X = string.IsNullOrEmpty(d.fPositionX + "") ? 0 : (float)d.fPositionX / 950, Y = string.IsNullOrEmpty(d.fPositionY + "") ? 0 : (float)d.fPositionY / 500 }); var GateWayList = (from a in LinqDBContext.Eventinfos from b in LinqDBContext.GatewaySystemInfo from c in LinqDBContext.site from h in LinqDBContext.onlineorg.Where(x => x.orgid == c.orgid).Distinct().DefaultIfEmpty() where a.Gatewayaddress == b.Gatewayaddress && b.siteid == c.siteid &&a.sysaddress==null&&a.deviceaddress==null&&a.cAlarmtype=="火警" select new demo() { Firealarmid=a.Firealarmid, CAlarmtype=a.cAlarmtype, Orgname= h.orgname, Sitename="", Gatewayaddress=a.Gatewayaddress, Vdesc = "", Deviceaddress = "", AlarmNum=a.AlarmNum, Vfireroomtel = string.IsNullOrEmpty(h.vfireroomtel) ? "" : h.vfireroomtel, Floornum = "", Location = "", DFirstAlarmtime=a.dFirstAlarmtime, DReceivetime= a.dReceivetime, Sysaddress = a.sysaddress, DeviceTypeName = "", ImFlatPic = "", X = (float)0, Y = (float)0 });
  • 打赏
  • 举报
回复
引用 4 楼 hanjun0612 的回复:
[quote=引用 3 楼 God_Girl 的回复:] 大神其实可看出来, 我第二个查询得查询条件都是包含在第一个查询里面得,从查询方式方面有解么?用一个查询。就是这俩a.sysaddress==null 导致 GatewaySystemInfo会出现很多数据&&a.deviceaddress==null导致devices出现很多数据,但是不加该判断则这量字段为空得查询不出来。所以我才用Union
你意思是你需要 Linq中的 left join? 那么应该是 var q=from a in A join b in B on A.id equals B.id into g from c in g.DefaultIfEmpty() select new(){你的字段}[/quote] 我建立了实体类也没用啊、、、、、、、、、、、、、、、、、、、、、、、、
正怒月神 2017-09-11
  • 打赏
  • 举报
回复
引用 3 楼 God_Girl 的回复:
大神其实可看出来, 我第二个查询得查询条件都是包含在第一个查询里面得,从查询方式方面有解么?用一个查询。就是这俩a.sysaddress==null 导致 GatewaySystemInfo会出现很多数据&&a.deviceaddress==null导致devices出现很多数据,但是不加该判断则这量字段为空得查询不出来。所以我才用Union
你意思是你需要 Linq中的 left join? 那么应该是 var q=from a in A join b in B on A.id equals B.id into g from c in g.DefaultIfEmpty() select new(){你的字段}
  • 打赏
  • 举报
回复
引用 1 楼 hanjun0612 的回复:
不能使用 合并list和GateWayList 因为你是select new 出来的,就算字段一样,但是编译器生成的临时模型也不是同一个。 你至少是 select new 自定义模型(){字段赋值} 然后就可以合并了
大神其实可看出来, 我第二个查询得查询条件都是包含在第一个查询里面得,从查询方式方面有解么?用一个查询。就是这俩a.sysaddress==null 导致 GatewaySystemInfo会出现很多数据&&a.deviceaddress==null导致devices出现很多数据,但是不加该判断则这量字段为空得查询不出来。所以我才用Union
  • 打赏
  • 举报
回复
float AllCount = list.Count(); 这里报错
引用 1 楼 hanjun0612 的回复:
不能使用 合并list和GateWayList 因为你是select new 出来的,就算字段一样,但是编译器生成的临时模型也不是同一个。 你至少是 select new 自定义模型(){字段赋值} 然后就可以合并了
就是我必须要定义实体类?、、、、、、、、、、我这好几个地方都要这样做 那我不是完了、、、而且量还不小
正怒月神 2017-09-11
  • 打赏
  • 举报
回复
不能使用 合并list和GateWayList 因为你是select new 出来的,就算字段一样,但是编译器生成的临时模型也不是同一个。 你至少是 select new 自定义模型(){字段赋值} 然后就可以合并了
一、本书的内容 目前,市面上有关计算机算法的书很多,有些叙述严谨但不全面,另外一些则是容量很大但不够严谨。本书将叙述的严谨性以及内容的深度和广度有机地结合了起来。第1版推出后,即在世界范围内受到了广泛的欢迎,被各高等院校用作多种课程的教材和业界的标准参考资料。它深入浅出地介绍了大量的算法及相关的数据结构,以及用于解决一些复杂计算问题的高级策略(如动态规划、贪心算法、平摊分析等),重点在于算法的分析和设计。对于每一个专题,作者都试图提供目前最新的研究成果及样例解答,并通过清晰的图示来说明算法的执行过程。. 本书是原书的第2版,在第1版的基础之上增加了一些新的内容,涉及算法的作用、概率分析和随机化算法、线性规划,以及对第1版中详尽的、几乎涉及到每一小节的修订。这些修订看似细微,实际上非常重要。书中引入了“循环不变式”,并贯穿始终地用来证明算法的正确性。在不改动数学和分析重点的前提下,作者将第1版中的许多数学基础知识从第一部分移到了附录中。 二、本书的特点 本书在进行算法分析的过程中,保持了很好的数学严谨性。书中的分析和设计可以被具有各种水平的读者所理解。相对来说,每一章都可以作为一个相对独立的单元来教授或学习。书中的算法以英语加伪代码的形式给出,只要有一点程序设计经验的人都能读懂,并可以用任何计算机语言(如C/C++和Java等)方便地实现。在书中,作者将算法的讨论集中在一些比较现代的例子上,它们来自分子生物学(如人类基因项目)、商业和工程等领域。每一小节通常以对相关历史素材的讨论结束,讨论了在每一算法领域的原创研究。 本书的特点可以概括为以下几个方面: 1.概念清晰,广度、深度兼顾。 本书收集了现代计算机常用的数据结构和算法,并作了系统而深入的介绍。对涉及的概念和背景知识都作了清晰的阐述,有关的定理给出了完整的证明。 2.“五个一”的描述方法。 本书以相当的深度介绍了许多常用的数据结构和有效的算法。编写上采用了“五个一”,即一章介绍一个算法、一种设计技术、一个应用领域和一个相关话题。.. 3.图文并茂,可读性强。 书中的算法均以通俗易懂的语言进行说明,并采用了大量插图来说明算法是如何工作的,易于理解。 4.算法的“伪代码”形式简明实用。 书中的算法均以非常简明的“伪代码”形式来设计,可以很容易地把它转化为计算机程序,直接应用。 注重算法设计的效率,对所有的算法进行了仔细、精确的运行时间分析,有利于进一步改进算法。 三、本书的用法 本书对内容进行了精心的设计和安排,尽可能考虑到所有水平的读者。即使是初学计算机算法的人,也可以在本书中找到所需的材料。 每一章都是独立的,读者只需将注意力集中到最感兴趣的章节阅读。 1.适合作为教材或教学参考书。 本书兼顾通用性与系统性,覆盖了许多方面的内容。本书不但阐述通俗、严谨,而且提供了大量练习和思考题。针对每一节的内容,都给出了数量和难度不等的练习题。练习题用于考察对基本内容的掌握程度,思考题有一定的难度,需进行精心的研究,有时还通过思考题介绍一些新的知识。 前言回到顶部↑本书提供了对当代计算机算法研究的一个全面、综合性的介绍。书中给出了多个算法,并对它们进行了较为深入的分析,使得这些算法的设计和分析易于被各个层次的读者所理解。力求在不牺牲分析的深度和数学严密性的前提下,给出深入浅出的说明。. 书中每一章都给出了一个算法、一种算法设计技术、一个应用领域或一个相关的主题。算法是用英语和一种“伪代码”来描述的,任何有一点程序设计经验的人都能看得懂。书中给出了230多幅图,说明各个算法的工作过程。我们强调将算法的效率作为一种设计标准,对书中的所有算法,都给出了关于其运行时间的详细分析。 本书主要供本科生和研究生的算法或数据结构课程使用。因为书中讨论了算法设计中的工程问题及其数学性质,因此,本书也可以供专业技术人员自学之用。 本书是第2版。在这个版本里,我们对全书进行了更新。所做的改动从新增了若干章,到个别语句的改写。 致使用本书的教师 本书的设计目标是全面、适用于多种用途。它可用于若干课程,从本科生的数据结构课程到研究生的算法课程。由于书中给出的内容比较多,只讲一学期一般讲不完,因此,教师们应该将本书看成是一种“缓存区”或“瑞典式自助餐”,从中挑选出能最好地支持自己希望教授的课程的内容。 教师们会发现,要围绕自己所需的各个章节来组织课程是比较容易的。书中的各章都是相对独立的,因此,你不必担心意想不到的或不必要的各章之间的依赖关系。每一章都是以节为单位,内容由易到难。如果将本书用于本科生的课程,可以选用每一章的前面几节内容;在研究生课程中,则可以完整地讲授每一章。 全书包含920多个练习题和140多个思考题。每一节结束时给出练习题,每一章结束时给出一些
一、本书的内容 目前,市面上有关计算机算法的书很多,有些叙述严谨但不全面,另外一些则是容量很大但不够严谨。本书将叙述的严谨性以及内容的深度和广度有机地结合了起来。第1版推出后,即在世界范围内受到了广泛的欢迎,被各高等院校用作多种课程的教材和业界的标准参考资料。它深入浅出地介绍了大量的算法及相关的数据结构,以及用于解决一些复杂计算问题的高级策略(如动态规划、贪心算法、平摊分析等),重点在于算法的分析和设计。对于每一个专题,作者都试图提供目前最新的研究成果及样例解答,并通过清晰的图示来说明算法的执行过程。. 本书是原书的第2版,在第1版的基础之上增加了一些新的内容,涉及算法的作用、概率分析和随机化算法、线性规划,以及对第1版中详尽的、几乎涉及到每一小节的修订。这些修订看似细微,实际上非常重要。书中引入了“循环不变式”,并贯穿始终地用来证明算法的正确性。在不改动数学和分析重点的前提下,作者将第1版中的许多数学基础知识从第一部分移到了附录中。 二、本书的特点 本书在进行算法分析的过程中,保持了很好的数学严谨性。书中的分析和设计可以被具有各种水平的读者所理解。相对来说,每一章都可以作为一个相对独立的单元来教授或学习。书中的算法以英语加伪代码的形式给出,只要有一点程序设计经验的人都能读懂,并可以用任何计算机语言(如C/C++和Java等)方便地实现。在书中,作者将算法的讨论集中在一些比较现代的例子上,它们来自分子生物学(如人类基因项目)、商业和工程等领域。每一小节通常以对相关历史素材的讨论结束,讨论了在每一算法领域的原创研究。 本书的特点可以概括为以下几个方面: 1.概念清晰,广度、深度兼顾。 本书收集了现代计算机常用的数据结构和算法,并作了系统而深入的介绍。对涉及的概念和背景知识都作了清晰的阐述,有关的定理给出了完整的证明。 2.“五个一”的描述方法。 本书以相当的深度介绍了许多常用的数据结构和有效的算法。编写上采用了“五个一”,即一章介绍一个算法、一种设计技术、一个应用领域和一个相关话题。.. 3.图文并茂,可读性强。 书中的算法均以通俗易懂的语言进行说明,并采用了大量插图来说明算法是如何工作的,易于理解。 4.算法的“伪代码”形式简明实用。 书中的算法均以非常简明的“伪代码”形式来设计,可以很容易地把它转化为计算机程序,直接应用。 注重算法设计的效率,对所有的算法进行了仔细、精确的运行时间分析,有利于进一步改进算法。 三、本书的用法 本书对内容进行了精心的设计和安排,尽可能考虑到所有水平的读者。即使是初学计算机算法的人,也可以在本书中找到所需的材料。 每一章都是独立的,读者只需将注意力集中到最感兴趣的章节阅读。 1.适合作为教材或教学参考书。 本书兼顾通用性与系统性,覆盖了许多方面的内容。本书不但阐述通俗、严谨,而且提供了大量练习和思考题。针对每一节的内容,都给出了数量和难度不等的练习题。练习题用于考察对基本内容的掌握程度,思考题有一定的难度,需进行精心的研究,有时还通过思考题介绍一些新的知识。 前言回到顶部↑本书提供了对当代计算机算法研究的一个全面、综合性的介绍。书中给出了多个算法,并对它们进行了较为深入的分析,使得这些算法的设计和分析易于被各个层次的读者所理解。力求在不牺牲分析的深度和数学严密性的前提下,给出深入浅出的说明。. 书中每一章都给出了一个算法、一种算法设计技术、一个应用领域或一个相关的主题。算法是用英语和一种“伪代码”来描述的,任何有一点程序设计经验的人都能看得懂。书中给出了230多幅图,说明各个算法的工作过程。我们强调将算法的效率作为一种设计标准,对书中的所有算法,都给出了关于其运行时间的详细分析。 本书主要供本科生和研究生的算法或数据结构课程使用。因为书中讨论了算法设计中的工程问题及其数学性质,因此,本书也可以供专业技术人员自学之用。 本书是第2版。在这个版本里,我们对全书进行了更新。所做的改动从新增了若干章,到个别语句的改写。 致使用本书的教师 本书的设计目标是全面、适用于多种用途。它可用于若干课程,从本科生的数据结构课程到研究生的算法课程。由于书中给出的内容比较多,只讲一学期一般讲不完,因此,教师们应该将本书看成是一种“缓存区”或“瑞典式自助餐”,从中挑选出能最好地支持自己希望教授的课程的内容。 教师们会发现,要围绕自己所需的各个章节来组织课程是比较容易的。书中的各章都是相对独立的,因此,你不必担心意想不到的或不必要的各章之间的依赖关系。每一章都是以节为单位,内容由易到难。如果将本书用于本科生的课程,可以选用每一章的前面几节内容;在研究生课程中,则可以完整地讲授每一章。 全书包含920多个练习题和140多个思考题。每一节结束时给出练习题,每一章结束时给出一些

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧