gpt4 book ai didi

c# - LINQ OrderBy().ThenBy() 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:27 25 4
gpt4 key购买 nike

我正在将我的一个项目从使用基于 SQL Server 的 Entity Framework 模型转换为使用本地 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 指令不是必需的,所以这看起来也有问题。有谁知道我可能会遗漏什么?

最佳答案

查看the source ,作者似乎没有正确理解 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;

通常有两个 orderby像这样的调用将是一个非常非常糟糕的主意 - 但在这种情况下这似乎是 LINQ 提供程序想要的。

关于c# - LINQ OrderBy().ThenBy() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21621078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com