如果计数大于 0,则在选择中 Linq OrderBy
本文关键字:选择 Linq OrderBy 大于 如果 | 更新日期: 2023-09-27 18:33:48
我有一个看起来像这样的查询:
var qContactsOpen = from x in promo.Contacts
where x.type == type && (x.closure_id == 0 || x.closure_id == null)
orderby x.id descending
select new ContactsGrid
{
Id = x.id,
DescriptionA = x.description_A,
Address = x.address,
PostalCode = x.postal_code,
Vat = x.vat_iva,
CategoryDescription = x.Categories.description,
SpecializationDescription = x.Specializations.description,
AreaDescription = x.Areas.description,
Location = x.location,
Subject = x.subject,
Note = x.ContactsActivities.OrderByDescending(o=>o.date).FirstOrDefault().note
};
选择中的最后一个字段是一个字符串属性,如果x.ContactsActivities
大于 0,我需要它,获取结果或将字符串为空。
如果我运行它,则返回一个错误,它无法按 null 排序。
听起来你可能只是想要:
Note = x.ContactsActivities
.OrderByDescending(o => o.date)
.Select(o => o.note)
.FirstOrDefault() ?? "";
通过将投影放在较早的位置,这意味着您最终会得到来自FirstOrDefault
的空结果作为最终结果,而不是尝试取消引用结果以从空引用中获取注释。
然后,null 合并运算符会将null
值转换为空字符串。请注意,这意味着即使有结果,如果其 note
属性恰好具有 null 值,您也会得到一个空字符串。