Join 子句中其中一个表达式的类型不正确。对“GroupJoin”的调用中的类型推理失败。

永动bug制造机 2011-09-01 10:28:18

var query = from d in db.d_necro
join g in db.Graves
on new { d.graveno, d.garea } equals new { g.gno, g.FgrId } into temp1
from g in temp1.DefaultIfEmpty()
join k in db.GraveKind
on d.gakind equals k.gkId into temp2
from k in temp2.DefaultIfEmpty()
select new
{
d,
g,
k
};

第一个join处提示报错
错误 36 join 子句中其中一个表达式的类型不正确。对“GroupJoin”的调用中的类型推理失败。
...全文
1359 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小的技术员 2014-03-04
  • 打赏
  • 举报
回复
字段的类型必须一样
adamzzww 2013-07-09
  • 打赏
  • 举报
回复
http://stackoverflow.com/questions/5120717/linq-join-statement-with-possible-null-id,这个可以解决哦。。
永动bug制造机 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wang726zq 的回复:]
上面只是解释为什么报错,下面提供一种新解决方案,因为数据库里面的不同表不可能字段都一样,那怎么办呢?
code :
var query = from d in db.d_necro
join g in db.Graves
on new { A=d.graveno, B=d.garea } equals new { A=g.graveno, B=g.garea } into temp……
[/Quote]

谢谢
wang726zq 2012-03-12
  • 打赏
  • 举报
回复 1
上面只是解释为什么报错,下面提供一种新解决方案,因为数据库里面的不同表不可能字段都一样,那怎么办呢?
code :
var query = from d in db.d_necro
join g in db.Graves
on new { A=d.graveno, B=d.garea } equals new { A=g.graveno, B=g.garea } into temp1
from g in temp1.DefaultIfEmpty()
join k in db.GraveKind
on d.gakind equals k.gkId into temp2
from k in temp2.DefaultIfEmpty()
select new
{
d,
g,
k
};
希望对你们有帮助
wang726zq 2012-03-12
  • 打赏
  • 举报
回复 1
补充一点:
3.数据库中不仅类型、列名相同,还需要看看是否可以允许为Null
如果 d.graveno not null
则 g.graveno 也必须 not null
wang726zq 2012-03-12
  • 打赏
  • 举报
回复
var query = from d in db.d_necro
join g in db.Graves
on new { d.graveno, d.garea } equals new { g.graveno, g.garea } into temp1
from g in temp1.DefaultIfEmpty()
join k in db.GraveKind
on d.gakind equals k.gkId into temp2
from k in temp2.DefaultIfEmpty()
select new
{
d,
g,
k
};
这样写就不会报错了
on new { d.graveno, d.garea }
equals new { g.graveno, g.garea }
1.两个对象中的字段必须一模一样
2.类型一样
wang726zq 2012-03-12
  • 打赏
  • 举报
回复
我也遇到了
lycdangweijun 2012-02-17
  • 打赏
  • 举报
回复
我也遇到类似的问题了,,,,闹心啊
claymore1114 2011-09-01
  • 打赏
  • 举报
回复
db.d_necro 和 Graves 关系没有处理好。
d.graveno 对应的g.gno 是不是一样(同是单个,同是集合,同一类型 等等 ...........
  • 打赏
  • 举报
回复
有点儿,注意类型,把后面去掉,然后一段一段加上去,看哪里出错了

8,497

社区成员

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

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