我們正處於一個困難時期試圖找出與出聲明一個循環,你會得到數據後處理的最佳方式時,處理空巢狀值。使用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