0

我有一个 Windows 8 商店应用程序,我正在为我的数据库使用 SQLite 上的最新版本。

所以我想从数据库中返回一些记录,我想按一列对它们进行排序。但是 SQLite 似乎没有 ThenBy 语句?所以我的 LINQ 语句如下:

from i in connection.Table<MyTable>()
where i.Type == type 
orderby i.Usage_Counter
// ThenBy i.ID
select i);

那么如何在不执行另一个 LINQ 语句的情况下按 SQLite 中的多个列进行排序呢?

4

2 回答 2

2

您不能使用 SQL-Net 的 LINQ 实现按多列排序,因为它没有ThenBy实现。

您可以使用以下Query方法解决此问题connection

var sorted =
    connection.Query<MyTable>(
    "select * from MyTable where Type = ? order by Usage_Counter, ID",
    // you may have to cast to int here...
    type);

另一种选择是使用上面的结果并调用ToList()它。然后,您可以按多个值对结果进行排序:

var tables =
from i in connection.Table<MyTable>()
where i.Type == type 
select i;

var tmp = tables.ToList();

var sorted =
from i in tmp
orderby i.Usage_Counter, i.ID
select i;
于 2013-10-27T03:49:27.640 回答
0

使用查询语法时,您只需提供一个以逗号分隔的字段列表以进行排序:

from i in connection.Table<MyTable>()
where i.Type == type 
orderby i.Usage_Counter, i.ID
select i

使用方法语法,您可以使用 ThenBy:

connection.Table<MyTable>()
          .Where(i => i.Type == type)
          .OrderBy(i => i.Usage_Counter)
          .ThenBy(i => i.ID)

编辑- 很抱歉在这里让您失望,但您似乎无法将 Entity Framework 与 Windows 8 应用商店应用程序一起使用:EntityFramework 是否可用于 Windows 8 应用商店应用程序?

于 2013-10-24T12:57:08.427 回答