SQLite-Net: используйте сравнение в предложении ORDER BY

Я использую базу данных SQLite-Net и хочу сделать заказ путем сравнения, например:

var value1 = 10;

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

(Примечание: значение1 и Поле1 являются целыми числами)

Это вызывает исключение:

System.NotSupportedException: Order By не поддерживает: i => i.Field1> value1

В качестве обходного пути я разделил этот запрос на две части:

  1. Выберите элемент, в котором Поле1 больше значения1
  2. Выберите элемент, в котором Поле1 меньше или равно значению1

А затем эти результаты объединяются в единый результат.

Есть ли лучший способ справиться с этим с помощью SQLite-Net?


person Jacco    schedule 15.08.2013    source источник
comment
И что является важной частью сообщения об ошибке?   -  person CL.    schedule 15.08.2013
comment
Мое плохое, оставил последнюю часть, потому что в ней точно указано предложение ORDER BY. Добавил эту часть сейчас.   -  person Jacco    schedule 15.08.2013


Ответы (1)


Мой первый подход был:

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);
person Jacco    schedule 15.08.2013