我们正处于一个困难时期试图找出与出声明一个循环,你会得到数据后处理的最佳方式时,处理空巢状值。使用LAMBDA。选择()与实体框架
例如采取这段代码:(数据2被绑定到数据与外键)
context.Data.Select(_ => new DataModel
{
Id = _.Id,
Data2 = new Data2Model
{
Id = _.Data2.Id,
Name = _.Data2.Name,
Date = _.Data2.Date
},
Date = _.Date
});
如果_.Data2不是null,则此运行正常,但如果_.Data2恰好是空那么这将会出错。我们现在正在解决这个问题的方式是将Data2Id添加到我们的DataModel,然后遍历所有记录以获取信息(如果它不为null)。
var lst = context.Data.Select(_ => new DataModel
{
Id = _.Id,
Data2Id = _.Data2ID
Date = _.Date
}).ToList();
foreach(var item in lst)
{
if (item.Data2Id != null)
{
var dataItem = context.Data2.FirstOrDefault(_ => _.Id == item.Data2Id);
item.Data2 = new Data2Model
{
Id = dataItem.Id,
Name = dataItem.Name,
Date = dataItem.Date
}
}
}
是否有一个更清洁/更好的方法来保持原来的选择循环。
感谢
试试?它工作还是不工作? :) –
它应该:)我没有完整的类定义,我不知道结果是否可以接受。 –
这工作就像一个魅力。空值返回null,如果他们有数据,则它们作为新模型返回。谢谢! – NormTheThird