【发布时间】:2013-08-19 09:32:09
【问题描述】:
我已针对这种情况查看了各种问答,但我的错误仍然存在。
我有以下几点:
Int32 eid = Convert.ToInt32(this.ddlPrograms.SelectedItem.Value);
var participants =
from b in _dc.WebProgramParticipants
join d in _dc.webeventaffiliations
on new { b.UserID, eid } equals new { d.userid, d.eventid }
join c in _dc.WebPersonalInfos
on b.UserID equals c.UserID
where (b.eventid == eid) select
new { b.ParticipantID, c.FirstName, c.LastName, c.Email, d.institution };
有问题的联接类型 {b.UserID = int, b.eventid = int?} 和等于 {d.userid = int, d.eventid = int}
“连接子句中的一个表达式的类型不正确。类型推断在调用'Join'时失败。”的错误。不会消失。据说第一个连接有类型问题,但唯一的问题是 b.eventid 是一个可为空的,我认为包含 eid 变量会起作用,但它没有。
这是怎么回事?
【问题讨论】:
-
两边各有哪些类型?
-
看起来
b.UserID的类型与d.userid的类型不同,和/或eid和d.eventid的类型相同,因此匿名对象有不同的类型。 -
所有 ID 的类型都是 int。我必须创建变量 eid 来补偿 Nullable 类型 b.eventid
-
@cdhowie,你的评论让我从不同的角度看待它,问题不是类型,而是实际单词的匹配。
-
@mattgcon 您也可以添加以下演员阵容:
(int?)d.eventid
标签: c# linq-to-sql join