0

iFlag列が 0 とマークされているテーブルから上位 15 行を取得する必要がある状況があります。

したがって、次の2つのステートメントがあります。

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


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

2つのステートメントの違いは何ですか?

上位 15 行がiFlag1 としてマークされている場合、最初の行は機能しますか?

4

2 に答える 2

1

最初のバージョン : 15 個のアイテムを取得し、それらをフィルター処理します。

2 番目のバージョン : すべてのアイテムを取得し、それらをフィルター処理して、フィルター処理されたアイテムのうち 15 のみを取得します。

いいえ、同じではありません。

はい、それらは「機能します」が、同じことはしません。

上位 15 行に iFlag が 1 としてマークされている場合、最初の行は機能しますか?

これは空の結果セットを返すだけです。

これはエラーではありません。おそらく、あなたが望むものではないでしょう!

于 2013-10-24T06:43:11.993 に答える
1

最初のものは:

  1. の最初の 15 行を取得します。UnProcessedLogs
  2. 次に、それらをフィルタリングしてiFlag == 0(明らかに15未満になる可能性があります)

2 つ目は次のようになります。

  1. UnProcessedLogsのすべての行を次のものまでフィルタリングしますiFlag == 0
  2. それらの最初の 15 を取得します。

テーブルに 30 行あり、1 行おきに があり、その間の行がiFlag == 0である場合、次のようiFlag == 1になります。

  1. 最初のクエリは 7 ~ 8 行を返します (テーブルの最初の 15 行のうち、 が付いている行を選択しますiFlag == 0) 。
  2. 2 番目のクエリは、15 個すべてを返します。iFlag == 0
于 2013-10-24T06:43:18.117 に答える