我有一个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中的多个列进行排序?
答案 0 :(得分: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;
答案 1 :(得分: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)
修改 - 很抱歉在这里成为下载者,但似乎您无法在Windows 8商店应用中使用Entity Framework:Is EntityFramework available for Windows 8 Store Apps?