2016-02-09 2 views
1

У меня есть следующий EF Linq запрос:EF 6 Пропустить все записи, в которых столбец имеет нулевое значение, из результатов получить ряд «N»

var face = de.Faces.OrderBy(f => f.id).Skip(recordNumber) 
       .FirstOrDefault(fd => fd.FuzzyHash != null); 

Что он должен делать, но недостаток есть:

  1. Получить NTH recordNumber от Лики, который имеет существующий FuzzyHash

Может кто-то исправить запрос и объяснить исправление мне - Что я делаю не так?

+3

Не эксперт Linq к Entities, так что может быть неправильно, но мне кажется, что вам нужно фильтровать строки с нулевыми значениями * до * вы используете 'Skip()'. Так что вы ищете, вероятно, 'de.Faces.Where (f => f.FuzzyHash! = Null) .OrderBy (f => f.id) .Skip (recordNumber)'. – easuter

ответ

3

Текущий запрос будет пропускать N записей, а затем взять первую запись, которая имеет FuzzyHash.

То, что вы хотите сделать, это первый фильтр записи, которые должны включать в себя только те, которые имеют FuzzyHash, а затем пропустить N записей, как это:

var face = de.Faces 
    .Where(fd => fd.FuzzyHash != null) 
    .OrderBy(f => f.id) 
    .Skip(recordNumber) //shouldn't this be recordNumber - 1? 
    .FirstOrDefault(); 
+1

Согласовано 'recordNumber - 1', если 1. +1 для хорошего форматирования (для других идентичных ответов) :) – MickyD

+0

recordNumber = 0 на основе, в котором я не использую пропущенный вариант запроса. –

+0

Правильно, если 'recordNumber' основан на нуле, то вы должны пропустить элементы' recordNumber'. –

3

EF Linq работает так, как если бы вы логически поняли эту проблему.

Мне нужно получить n-ю запись из упорядоченного списка лиц, где некоторая колонка не равна нулю.

Во-первых, получите список нулевых столбцов Faces, затем закажите, затем пропустите, а затем получите запись.

4

Необходимо удалить все записи, где FuzzyHash имеет значение null.

var face = de.Faces.Where(r => null != r.FuzzyHash).OrderBy(f => f.id).Skip(recordNumber) 
      .FirstOrDefault(); 
+0

Я думаю, что это должно сработать, хотя фильтр в 'FirstOrDefault' лишний. –

+0

@MisterEpic: вы правы. исправленный. –

Смежные вопросы