var articles = context.Articles.Where(a => a.Id != articleId)
.OrderBy(p => p.Categories.OrderBy(q => q.Name).FirstOrDefault().Name).ToList();
我收到了可能的NullReferenceException消息,它是正確的。實體框架和lambda表達式樹(深空合併)
所以我讓
var articles = context.Articles.Where(a => a.Id != articleId)
.OrderBy(p =>
(p.Categories.OrderBy(q => q.Name).FirstOrDefault() != null
? p.Categories.OrderBy(q => q.Name).FirstOrDefault().Name
: null))
.Skip(page * pageSize)
.Take(pageSize)
.ToList();
其作品,但語句調用兩次,可能會很慢,所以我儘量讓
var articles = context.Articles.Where(a => a.Id != articleId)
.OrderBy(p =>
{
var firstOrDefault = p.Categories.OrderBy(q => q.Name).FirstOrDefault();
return firstOrDefault != null ? firstOrDefault.Name : null;
}).ToList();
,但我得到
lambda表達式與語句正文不能轉換爲表達式樹 。
我該怎麼辦?第一個例子正確,即使我打電話兩次p.Categories.OrderBy(q => q.Name).FirstOrDefault().
我在想這可能會很慢。數據庫中有200k行。
對於你使用'lambda'到這個程度是否至關重要?通過重新分解一些'lambda'表達式,解決你的解決方案可能會更容易,並使代碼更具可讀性。 –