【发布时间】:2014-03-04 11:18:26
【问题描述】:
我正在将我的一个项目从使用基于 SQL Server 的实体框架模型转换为使用本地 SQLite 数据库。到目前为止一切进展顺利,但由于某种原因,我无法对多列的查询进行排序。例如:
using (var db = new SQLiteConnection("test3.db"))
{
var query = from a in db.Table<Account>()
where a.Inactive == false
orderby a.AccountName, a.AccountNickname
select a;
foreach (var account in query)
{
accounts.Add(account);
}
}
AccountsGrid.ItemsSource = accounts;
给我错误Cannot resolve symbol 'ThenBy',但如果我将排序更改为:
orderby a.AccountName
然后查询工作正常。我也尝试过使用.OrderBy(a => a.AccountName).ThenBy(a => a.AccountNickname),但我得到了同样的错误。我已经包含了using System.Linq;,但是 ReSharper 告诉我 using 指令不是必需的,所以这看起来也很可疑。有谁知道我可能会错过什么?
【问题讨论】:
-
db.Table<Account>()输入什么? -
我认为这可能与我正在使用的 SQLite 包装器有关。与其使用 .OrderBy() 的
System.Linq实现,不如使用它自己的实现。我正在使用 sqlite-net。 -
@Grundy,
db.Table<Account>()是从数据库返回的Account对象的底层 SQLite 表。 -
我很惊讶你可以像这样打电话给
db.Table<Account>。查看 LinqConnect 文档,我预计它需要一个上下文类......Table方法在哪里定义? (如果你将鼠标悬停在它上面,它应该会说明它是否是扩展方法。) -
您可以尝试添加
System.Linq命名空间并将db.Table<Account>()更改为db.Table<Account>().AsQueryable()或db.Table<Account>().AsEnumerable()