这让我很烦恼,为什么当我想选择一条不存在的记录时,这??
两个都不起作用。== null
例如,如果我这样做
var foo = db.Where(k => k.ID == 9) ?? bar;
它工作正常,但是Object reference not set to an instance of an object
当我想要select
单个字段时它会崩溃(错误):
var foo = db.Where(k => k.ID == 9).Select(k => k.Field).FirstOrDefault() ?? bar;
//or
var foo = bar;
if (db.Where(k => k.ID == 9) != null)
foo = db.Where(k => k.ID == 9).Select(k => k.Field).FirstOrDefault()
在这两种情况下,它都会崩溃,这似乎很合乎逻辑。
通常我不介意做
if (Order.A_Data.Where(k => k.FieldID == 9).Count() > 0)
writeText(cb, Order.A_Data.Where(k => k.FieldID == 9).
Select(k => k.Content).
FirstOrDefault().ToString(),
left_margin, top_margin - 24, f_cn, 10);
//this looks more like the actual code, but in fact it has multiple 'where' conditions and more tables connected with an external key, that's why I don't want to write the same thing over and over again
//or creating new variables
但遗憾的是,我必须重新创建真正复杂的 PDF 文档,其中包含数百个字段*,例如从数十个表中获取数据,因此每一种“棘手的方式”都会非常有帮助。此外,它非常缓慢。
或者,也许有一个 keep-your-null-exception-errors-for-yourself-and-just-return-an-empty-string 开关?
* 278 更具体。所以我要么找到简单的方法来做到这一点,要么再准备一桶咖啡,叹气,做我的工作