2016-11-01 1 views
0

ゲッター:ゲッター評価私は、次のしている

public DateTime LastWeek {  
    get { return this.FirstWeek.AddDays(7 *this.WeeksCount); } 
} 

し、次の問合せは

var query = from o in dataContext.Operations 
      where o.Date <= param.LastWeek && o.Date >= param.FirstWeek; 

はゲッターの実行を照会する前に評価されますLastWeekます

、その値が渡されるか、またはそれを意志DATEADD(... - ロジックがクエリに転送されるように)

上記の両方のアプローチを使用して試したり、lastWeek valを取るのは簡単です余分な変数に:

var lastWeek = param.LastWeek; 

しかし、我々はすべてのクエリをチェックする必要があります - 適用可能なグローバルルールはありますか?

答えて

0
string queryText = (from o in dataContext.Operations 
      where o.Date <= param.LastWeek && o.Date >= param.FirstWeek).ToString(); 

あなたはどのようなsqlクエリがビルドされるのか分かります。

0

LastWeek実装内のロジックはSQLに転送されません。しかし、私は、クエリがSQLに変換されるときだけ、C#で評価されると確信しています。ゲッターにブレークポイントを置き、クエリーが実行される前にヒットするかどうかを調べます。

SQLに変換されるものは式であり、実装ではありません(LinqはContains()Any()などのSQLへの呼び出しをいくつかマップします)。

関連する問題