EF 6从结果获取行' N'

时间:2016-02-09 00:30:23

标签: c# entity-framework linq

我有以下EF Linq查询:

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

应该做什么,但失败的是:

  1. 从具有现有recordNumber
  2. 的Faces获取第N FuzzyHash

    有人可以修复查询并向我解释修复 - 我做错了什么?

3 个答案:

答案 0 :(得分:4)

您需要删除FuzzyHash为空的所有记录。

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

答案 1 :(得分:3)

EF Linq的运作方式就像你在逻辑上想出这个问题一样。

  

我需要从Faces的有序列表中获取第n条记录,其中某些列不为空。

首先,获取非空列的Faces列表,然后顺序,然后跳过,然后获取记录。

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

答案 2 :(得分:3)

当前查询将跳过N条记录,然后获取具有FuzzyHash的第一条记录。

您要做的是首先过滤记录以仅包含具有var face = de.Faces .Where(fd => fd.FuzzyHash != null) .OrderBy(f => f.id) .Skip(recordNumber) //shouldn't this be recordNumber - 1? .FirstOrDefault(); 的记录,然后跳过N个记录,如下所示:

is_enabled = True if (cfg and cfg.get('enabled')) else False