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'表达式,解决你的解决方案可能会更容易,并使代码更具可读性。 –