LINQ-排序依据和按不同字段区分。跳过并采用不同的值

问题描述 投票:0回答:2

我正在尝试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”。'

我了解原因(在排序和跳过之间更改了集,但是我可以解决此问题而无需多次查询数据库吗?

c# linq linq-to-sql sql-order-by distinct
2个回答
0
投票

您可以从数据库的Distinct值中获取,然后像这样在内存中工作:

var result = entities.OrderBy(e => e.OrderField)
                     .Select(e => e.SelectField)
                     .Distinct()
                     .ToArray()
                     .Skip(skip)
                     .Take(take)
                     .ToArray();

您将根据需要查询一次


0
投票
var result = entities.OrderBy(e => e.OrderField)
                 .Select(e => e.SelectField)
                 .Distinct()
                 .OrderBy(e => e)
                 .Skip(skip)
                 .Take(take)
                 .ToArray();
© www.soinside.com 2019 - 2024. All rights reserved.