C# LINQ外部联接产生错误
以下LINQ语句C中的简单外部联接引发了一个野生异常:C# LINQ外部联接产生错误,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,以下LINQ语句C中的简单外部联接引发了一个野生异常: var query = from cs in db.scan join cp in db.patient on cc.pid equals cp.pid into cpGroup from cp2 in cpGroup.DefaultIfEmpty() select new { Name = ((cp2 == null) ?
var query =
from cs in db.scan
join cp in db.patient on cc.pid equals cp.pid into cpGroup
from cp2 in cpGroup.DefaultIfEmpty()
select new
{
Name = ((cp2 == null) ?
String.Empty :
cp2.plastname + ", " + cp2.pfirstname),
DOB = ((cp2 == null) ?
DateTime.MinValue :
cp2.pdateofbirth)
};
例外情况:
Auf die变量cp2 vom典型核心。患者与Bereich verwiesen,您是jedoch nicht定义者
翻译成:
Core.patient类型的变量cp2按区域引用,但未定义
这里怎么了?顺便说一句。此错误无法被周围的try-catch块捕获…连接可能有问题。这是林奇完成同样事情的方法
var query =
from cs in db.scan
from cp in db.patient
where cs.pid == cp.pid
select new
{
Name = cp.plastname + ", " + cp.pfirstname),
DOB = cs.pdateofbirth
};
尝试使select仅选择new{Test=cp2}。还是错误吗?是的,还是错误…我不知道。尝试将其放入并使用.Dump函数查看它的外观?'cc.pid equals',您是指cs.pid equals,对吗?另外,patient是普通类的普通列表,还是实体框架的enitty,您尝试使用此查询从数据库加载数据?我也会这样做1这是内部连接,而不是外部连接,因为OP正试图得到它。2这是做一个笛卡尔乘积,然后过滤掉它,这比连接的效率要低得多,因为连接的优化程度要高得多。