C# 用于从数据库表中选择下一个id的Linq查询
是否有任何方法可以在不知道其“C# 用于从数据库表中选择下一个id的Linq查询,c#,linq,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 我试图获取每个作业的Id,并使用它将其插入日志表中。我知道这是一种“违反规则
Id
”的情况下从数据库表中选择下一个对象
数据库表看起来像这样,它被称为Jobs
:
Id | ScheduleId | DateHappened | Status
1 | 150 | 2014-05-30 | Done
2 | 150 | 2014-06-10 | Done
3 | 150 | 2014-06-13 | Done
我试图获取每个作业的Id
,并使用它将其插入日志表中。我知道这是一种“违反规则”的要求,但在现阶段,我不能做出任何大的改变
我知道在这种情况下,我可以使用
.first()
和.last()
函数来选择第一个和最后一个元素,但是介于两者之间的任何元素呢?似乎您需要所有作业的所有ID:
db.Jobs.Select(j => j.ID).ToList()
似乎您需要所有作业的所有ID:
db.Jobs.Select(j => j.ID).ToList()
你可以试试这个:
var ids = db.Jobs.Select(x=>x.Id);
或
你可以试试这个:
var ids = db.Jobs.Select(x=>x.Id);
或
您似乎假设作业是按
id
的顺序返回的,这可能是一个很大的假设
但是,您还提到了.First()
和.Last()
,并标记了“Linq”,因此我假设您已经以某种方式从数据库中获取了数据。我假设您有一个名为queryResult
的IQueryable
,您正在调用.First()
和.Last()
来获取此答案的剩余部分
如果您只想查看每条记录,那么可能根本不需要Linq:只需使用foreach
:
foreach (var row in queryResult)
{
....
}
var ids = queryResult.Select(x => x.Id);
foreach (var id in ids)
{
....
}
或者,如果您不需要所有方法,您可以使用Linq的.Skip()
:
或者,如果您只想将所有ID记录为单个项目,则可以使用Linq的Select
获取ID列表:
queryResult.Select(x => x.Id)
如果您只对ID感兴趣,但需要单独循环,则可以潜在地使用此的结果。选择与其他解决方案结合使用,以提高代码的效率。如果您使用的是带有延迟执行(如EF)的ORM,那么像这样的查询比提取整个数据库然后使用foreach
:
foreach (var row in queryResult)
{
....
}
var ids = queryResult.Select(x => x.Id);
foreach (var id in ids)
{
....
}
您似乎假设作业是按id
的顺序返回的,这可能是一个很大的假设
但是,您还提到了.First()
和.Last()
,并标记了“Linq”,因此我假设您已经以某种方式从数据库中获取了数据。我假设您有一个名为queryResult
的IQueryable
,您正在调用.First()
和.Last()
来获取此答案的剩余部分
如果您只想查看每条记录,那么可能根本不需要Linq:只需使用foreach
:
foreach (var row in queryResult)
{
....
}
var ids = queryResult.Select(x => x.Id);
foreach (var id in ids)
{
....
}
或者,如果您不需要所有方法,您可以使用Linq的.Skip()
:
或者,如果您只想将所有ID记录为单个项目,则可以使用Linq的Select
获取ID列表:
queryResult.Select(x => x.Id)
如果您只对ID感兴趣,但需要单独循环,则可以潜在地使用此的结果。选择与其他解决方案结合使用,以提高代码的效率。如果您使用的是带有延迟执行(如EF)的ORM,那么像这样的查询比提取整个数据库然后使用foreach
:
foreach (var row in queryResult)
{
....
}
var ids = queryResult.Select(x => x.Id);
foreach (var id in ids)
{
....
}
“我正在尝试获取每个作业的Id
”-那么您不需要选择所有项目吗?“我正在尝试获取每个作业的Id
”-那么您不需要选择所有项目吗?使用foreach
实际上通过得很好,我不敢相信我之前没有想到它..使用foreach
实际上通过得很好,我不敢相信我之前没有想到它。。