我正在尝试ORDER BY
某些字段,但用另一字段SELECT DISTINCT
,然后应用Skip & Take
代码:
var result = entities.OrderBy(e => e.OrderField)
.Select(e => e.SelectField)
.Distinct()
.Skip(skip)
.Take(take)
.ToArray();
但是我遇到了这个例外:
System.NotSupportedException:'仅对LINQ to Entities中的排序输入支持'Skip'方法。必须在方法“跳过”之前调用方法“ OrderBy”。'
我了解原因(在排序和跳过之间更改了集,但是我可以解决此问题而无需多次查询数据库吗?
您可以从数据库的Distinct
值中获取,然后像这样在内存中工作:
var result = entities.OrderBy(e => e.OrderField)
.Select(e => e.SelectField)
.Distinct()
.ToArray()
.Skip(skip)
.Take(take)
.ToArray();
您将根据需要查询一次
var result = entities.OrderBy(e => e.OrderField)
.Select(e => e.SelectField)
.Distinct()
.OrderBy(e => e)
.Skip(skip)
.Take(take)
.ToArray();