【发布时间】:2012-07-11 16:55:24
【问题描述】:
以下代码中的第一个三元语句返回“null”。 myID 返回为空。但是,如果三元语句工作正常,并且 a.someID 为空,则 myID 应返回为 -1。 myID 是一个可为空的 int 字段。你知道为什么我没有得到-1吗?谢谢。
public List<myView> GetRecords()
{
myEntities entities = new myEntities();
var myValue = (from a in entities.myEntitiesA
join b in entities.myEntitiesB on a.myID equals b.myID into myEntitesC
from c in myEntitesC.DefaultIfEmpty()
select new myView
{
myID = a.someID == null ? -1 : a.someID,
myName = a.myName,
myAlternateID = c.myID == null ? -1 : c.myID,
myAlternateName = c.myName == null ? "" : c.myName,
}).Distinct().OrderBy(b => b.myName).ToList();
return (myValue);
}
编辑 - 为了测试,我已经摆脱了 DefaultIfEmpty(),但我的结果是一样的。
【问题讨论】:
-
另外 - 你可能想处理你的
myEntities。 -
你如何确定
myID是null? -
@Razvan - someID 也是可以为空的 int。
-
@JaredPar - 我可以看到 someID 在基础数据库记录中为空。
-
@WEFX 这将表明
null最终被写入记录,而不是从上述查询中以null的形式返回。有没有在运行的程序中查看GetRecords的结果,看myID是不是null?
标签: c# linq ternary-operator