2014-06-30 75 views
0

有什麼辦法可以從數據庫表中選擇下一個對象而不知道它的'IdLinq查詢從數據庫表中選擇下一個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的標識,並用它來將其插入日誌表。我知道這是某種「違反規則」的要求,但在現階段我無法做出任何重大改變。

我知道在這種情況下,我可以使用.First().Last()函數來選擇第一個和最後一個元素,但其間的任何內容呢?

+2

*「我試圖讓每個標識'工作'「* - 你不需要選擇所有項目嗎? – James

回答

1

看來你假設工作按照id的順序返回,這可能是一個很大的假設...

但是,你也提到.First().Last()並標記了「Linq」,所以我假設你已經以某種方式從數據庫獲取了你的數據。我假設你有一個名爲IQueryablequeryResult您呼叫.First().Last()上對這個答案的其餘部分...

如果你只是想通過每一條記錄,你也許並不需要在Linq的所有:只使用一個foreach

foreach (var row in queryResult) 
{ 
    .... 
} 

另外,如果你不希望每一個方法做,你也許可以使用Linq的.Skip()

queryResult.Skip(10).First() // gives you the 11th record 

或者,如果你只是想記錄所有的ID作爲一個單一的項目,你可以使用Linq的Select得到公正的ID列表:

queryResult.Select(x => x.Id) 

如果所有你感興趣的是ID,但您需要單獨循環,那麼您可以將此.Select的結果與其他解決方案結合使用,以使代碼更高效。如果您使用的是與延遲執行(如EF)的ORM那麼這樣的查詢是不是拉整個數據庫,然後使用更高效的一個foreach

var ids = queryResult.Select(x => x.Id); 
foreach (var id in ids) 
{ 
    .... 
} 
+0

使用'foreach'實際上是完美的,我不能相信我之前沒有想過它。 – Apostrofix

2

看來你想從所有作業的所有ID:

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

你可以試試這個:

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

var ids = (from job in db.Jobs 
      select job.Id); 
相關問題