dub*_*lee 1 c# sql linq sqlite
我正在将我的项目从使用基于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;
Run Code Online (Sandbox Code Playgroud)
给我错误Cannot resolve symbol 'ThenBy',但如果我将订单更改为:
orderby a.AccountName
Run Code Online (Sandbox Code Playgroud)
然后查询工作正常.我也试过使用,.OrderBy(a => a.AccountName).ThenBy(a => a.AccountNickname)但我得到了同样的错误.我已经包括using System.Linq;但是ReSharper告诉我不需要using指令,所以这看起来也很可疑.有没有人有任何想法,我可能会失踪?
看看源代码,作者似乎并不理解LINQ:
ThenBy方法,而是他们通过多次OrderBy调用收集多个订单IQueryable<T>实现(这就是你不需要的原因using System.Linq) - 虽然这是一种有效的方法,但这是一个非常不寻常的方法.我个人会非常担心使用它 - 事实上它是"有组织的",因为三个巨大的源文件也略微令人担忧.您可能想尝试使用LinqConnect - 尽管我还没有使用它.
如果你确实想坚持你正在使用的实现,我怀疑这会工作 - 但它不适用于其他LINQ提供程序:
var query = from a in db.Table<Account>()
where a.Inactive == false
orderby a.AccountName
orderby a.AccountNickname // Warning! Not portable!
select a;
Run Code Online (Sandbox Code Playgroud)
通常有两个这样的orderby调用会是一个非常非常糟糕的想法 - 但似乎这就是LINQ提供商在这种情况下想要的.
| 归档时间: |
|
| 查看次数: |
8970 次 |
| 最近记录: |