我有一个Linq查询,我从中获取数据,如下所示:
var attachedItems = items.ToDictionary(
w => w.Number,
w => w.Attachments.Select(a => a.Name).ToArray()
);
Run Code Online (Sandbox Code Playgroud)
这到目前为止工作正常,但有时Attachments.Name属性是空的.然后我想得到另一个属性的价值.
为了显示:
var attachedItems = items.ToDictionary(
w => w.Number,
w => w.Attachments.Select(a => a.Name).ToArray()
// If Attachments.Name == Empty, then get
w => w.EquipmentCode
);
Run Code Online (Sandbox Code Playgroud)
我如何在Linq查询中执行此操作?
var attachedItems = items.ToDictionary(
w => w.Number,
w => w.Attachments.Select(a => a.Name)
.DefaultIfEmpty(w.EquipmentCode)
.ToArray()
);
Run Code Online (Sandbox Code Playgroud)
这将检索所有附件名称,如果没有附件,EquipmentCode则返回包含该值的单个项目的数组.
如果在该EquipmentCode属性上定义了属性,Attachment并且您需要将其作为每个附件的后备值,请检查Jon Skeet的答案.
听起来你只想要条件运算符:
var attachedItems = items.ToDictionary(
w => w.Number,
w => w.Attachments.Select(a => string.IsNullOrEmpty(a.Name)
? a.EquipmentCode : a.Name)
.ToArray());
Run Code Online (Sandbox Code Playgroud)