【问题标题】:SQLite collation attributeSQLite 排序规则属性
【发布时间】:2017-05-23 10:53:06
【问题描述】:

我在我的 Xamarin 应用程序上使用 sqlite 数据库,我正在尝试在我的数据模型上设置排序规则属性

public class Customer
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }

    [Collation("NOCASE")]
    public string Name { get; set; }

    public string Email { get; set; }

}

但我在任何地方都没有找到必须将哪个值设置为排序规则属性以控制区分大小写/不区分大小写的排序规则

这是我的测试代码:

var dbfile = DependencyService.Get<IFileHelper().GetLocalFilePath("data.db");

db = new SQLiteAsyncConnection(dbfile);
db.CreateTableAsync<Customer>().Wait();
var result = await db.Table<Customer>().OrderBy(c => c.Name).ToListAsync();

预期结果:名称列中不区分大小写的顺序,

实际结果:顺序区分大小写。

【问题讨论】:

  • 1) var sortedWords = words.OrderBy(a => a.Name, StringComparer.OrdinalIgnoreCase); 2) sortedWords = words.OrderBy(a => a.Name, StringComparer.CurrentCultureIgnoreCase); 3) sortedWords = words.OrderBy(a => a.Name, StringComparer.InvariantCultureIgnoreCase);
  • 抱歉,我没有发现可以指定 StringComparer 的方法 OrderBy 的重载

标签: c# sqlite


【解决方案1】:

已解决,属性后

[Collation("NOCASE")]

被添加,然后表必须被删除并重新接收。通常sqlite在命令发生变化后会自动更新表

db.CreateTableAsync<Customer>().Wait()

已执行,但在这种情况下需要删除/删除表。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2012-09-11
  • 2018-12-19
  • 2023-04-11
相关资源
最近更新 更多