【发布时间】:2012-08-24 19:16:22
【问题描述】:
我正在尝试对 2 个对象执行左外连接并收到错误:对象引用未设置为对象的实例。
物体看起来像那样
var deliverables = OCHART.GetACAPValues(organization, ReportingPeriod, FiscalYear, "(09-10.10a) Outreach Significant").ToList();
var references = (from rf in OCHART.References where rf.RefType.Equals("09-10.10a") && rf.Comments.Equals("2") select rf).ToList();
其中可交付成果可能经常返回 0 条记录。不幸的是,我不能只是去连接数据库中的两个表,因此可交付成果必须是一个对象。
有人可以指点我正确的方向
谢谢,
我的代码是
var items = (from rf in references
join pt in deliverables on rf.Description equals pt.b into prt
from x in prt.Where(prt2 => prt2.a.Equals(audience)).DefaultIfEmpty()
where rf.RefType.Equals("09-10.10a") && rf.Comments.Equals("2")
select new
{
audience = (string)(audience == null ? "" : audience),
RefType = (string)(rf.RefType == null ? "" : rf.RefType),
RefOrder = (int)(rf.RefOrder == null ? 0 : rf.RefOrder),
refName = (string)(rf.Description == null ? "" : rf.Description),
collumn_attr = (string)(x.b == null ? string.Empty : x.b),
value = (int)(x.ACAP == null ? (int?)null : x.ACAP)
})
.OrderBy(o => o.RefOrder)
.Take(9)
.ToList();
编辑: 经过更多调试后,我的代码中的以下几行似乎出现错误
collumn_attr = (string)(x.b == null ? string.Empty : x.b),
value = (int)(x.ACAP == null ? (int?)null : x.ACAP)
我注意到,即使我在可交付成果中有值(添加用于测试),并且当值匹配时,查询将正确执行,但是当可交付成果中没有匹配时,我就会收到错误消息。
问题可能在于处理空值。
【问题讨论】:
标签: c# linq-to-sql c#-3.0 linq-to-objects