我试图从Entity Framework中获取数据记录ID:
var plantAreaID = await db.PlantAreas
.Where(p => p.Plant.CompanyNo == companyNo && p.Plant.Abbreviation == companyAbbr)
.Select(p => p.ID)
.SingleOrDefaultAsync();
问题在于,存在一个ID为0的
PlantArea
。但是,如果未找到任何记录,则SingleOrDefault会返回0。那么我该如何区分ID 0和未找到数据的情况?我的第一个想法是提供默认值-1,但在这种情况下,
SingleOrDefault
似乎不支持这样做。我该怎么办?
DefaultIfEmpty(-1)
方法,并跟随一个简单的SingleAsync()
。您更倾向于哪个呢? - André ReicheltDefaultIfEmpty
可能更好。 如果您只想要null
,我认为我更喜欢我的方式,但这只是我的思维方式罢了 :) - gnudnull
是指示缺失值的正常方式。” 这就是答案。成本为单一可空转换,即零成本。DefaultIfEmpty
和通常的魔数是更差的选择。请注意,即使对于非可空表达式,返回NULL
在 SQL 中也是自然的——需要转换只是为了让 C# 编译器满意。 - Ivan Stoev