0

我正在使用 SQLite-Net 数据库,并希望通过比较进行排序,如下所示:

var value1 = 10;

var items = connection.Table<Item>.OrderBy(i => i.Field1 > value1).ToArray();

注意:value1 和 Field1 都是整数

这会引发异常:

System.NotSupportedException:Order By 不支持:i => i.Field1 > value1

作为一种解决方法,我现在将此查询分为两部分:

  1. 选择Field1大于value1的项
  2. 选择Field1小于等于value1的项

然后将这些结果组合成一个结果。

有没有更好的方法来使用 SQLite-Net 来处理这个问题?

4

1 回答 1

0

我的第一种方法是:

var value1 = 10;
var items = new List<Item>();
items.AddRange(connection.Table<Item>.Where(i => i.Field1 <= value1));
items.AddRange(connection.Table<Item>.Where(i => i.Field1 > value1));

但我最终选择了一个查询:

var value1 = 10;
var items = connection
              .Query<Item>(@"SELECT * 
                             FROM [Item] 
                             ORDER BY [Field1] > ? ASC", value1);
于 2013-08-15T21:24:29.100 回答