有没有办法从数据库表中选择下一个对象而不知道它的“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()
函数选择第一个和最后一个元素,但介于两者之间的是什么?
答案 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