2013-10-24 39 views
0

我有一個situtation中,我需要從表所在的iFlag列標記0是否有這兩個搜索聲明實體框架

獲得前15行所以我有這兩個語句之間的差異:

var t = dbContext.UnProcessedLogs.Take(15).Where(up => up.iFlag == 0).ToList(); 


var unProcessedlogs = dbContext.UnProcessedLogs.Where(up => up.iFlag == 0).Take(15).ToList(); 

兩者有什麼語句之間的區別?

會的第一個工作,如果前15行具有iFlag標記爲1

回答

1

第一個將:

  1. 取的頭15個的行UnProcessedLogs
  2. 然後用iFlag == 0過濾那些向下的那些(其可以是小於15顯然)

第二一個會:

  1. 篩選所有的行UnProcessedLogs下降到那些iFlag == 0
  2. 利用這些

第15如果表中有30行,其中每隔一行有iFlag == 0和那些其間有iFlag == 1,則:

  1. 的第一個查詢將返回7-8行(表中前15個,選擇iFlag == 0
  2. 第二個查詢將返回所有15個與iFlag == 0
1

第一個版本:以我15項,過濾他們。

第二個版本:帶我的所有項目,濾波他們,只需要過濾的項目15個。

不,這是不一樣的。

是的,他們將「工作」,但不會做。

請問,如果前15行具有IFLAG第一個工作標記爲1

這隻會返回一個空結果。

這是不是一個錯誤,它只是可能不是你想要的!