Linq查询从数据库表中选择下一个id

时间:2014-06-30 13:59:45

标签: c# linq

有没有办法从数据库表中选择下一个对象而不知道它的“Id

数据库表看起来像这样,它被称为Jobs

Id | ScheduleId | DateHappened | Status
 1 |   150      | 2014-05-30   | Done
 2 |   150      | 2014-06-10   | Done
 3 |   150      | 2014-06-13   | Done

我正在尝试获取每个Job的ID,并使用它将其插入日志表中。我知道这是某种“违反规则”的要求,但在这个阶段我不能做出任何重大改变。

我知道在这种情况下,我可以使用.First().Last()函数选择第一个和最后一个元素,但介于两者之间的是什么?

3 个答案:

答案 0 :(得分:2)

您似乎想要所有工作中的所有ID:

db.Jobs.Select(j => j.ID).ToList()

答案 1 :(得分:2)

你可以尝试这个:

var ids = db.Jobs.Select(x=>x.Id);

var ids = (from job in db.Jobs
          select job.Id);

答案 2 :(得分:1)

您似乎假设工作按id的顺序返回,这可能是一个很大的假设...

但是,您还提到.First().Last()并标记了" Linq",因此我假设您已经以某种方式从数据库中获取了数据。我假设您有一个名为IQueryable的{​​{1}},您正在呼叫queryResult.First()以获取此答案的其余部分...

如果您只是想浏览每条记录,您可能根本不需要Linq:只需使用.Last()

foreach

或者,如果您不想要每种方法,您可以使用Linq' foreach (var row in queryResult) { .... }

.Skip()

或者,如果您只想将所有ID记录为单个项目,则可以使用Linq的queryResult.Skip(10).First() // gives you the 11th record 获取仅ID的列表:

Select

如果您感兴趣的只是ID,但您需要单独循环,那么您可以将此queryResult.Select(x => x.Id) 的结果与其他解决方案结合使用,以提高您的代码效率。如果您正在使用具有延迟执行的ORM(如EF),那么像这样的查询比拉动整个数据库然后使用.Select更有效:

foreach