0

我有一个轻而易举的查询来从我的数据库中获取一些值。

如果我想按字母顺序对值进行排序,则查询如下所示:

var query = EntityQuery.from("Words")
.orderBy("Text");

问题是我想先按长度对返回的值进行排序,然后按字母顺序。

例如,这组结果按字母顺序排列:

a
ab
b
bb

我如何使它像这样订购:

a
b
ab
bb

??

我知道我可以编写一个函数来在从服务器返回数据后按照我想要的方式对数据进行排序,但我想知道是否可以更改查询,以便仅通过更改查询对数据进行如上所述的排序?

4

1 回答 1

0

您可以通过在将数据发送回客户端之前在服务器上添加一个额外的过滤步骤来完成此操作。

[HttpGet]
public IQueryable<Word> Words() {
  return ContextProvider.Context.Words.ToList().OrderBy(customOrderByImpl;
}

这可能低于性能,因为在您的示例中,我认为您不能利用任何数据库排序(至少通过 EF)。这就是为什么在对服务器内存中的结果进行排序之前调用 ToList。

希望这是有道理的。

于 2013-08-08T17:24:06.120 回答