私はこれを達成しようとしていますが、クエリの実行時に最初のwhere句のみが使用されています。
これは.Net 3.5で必要になるため、4.0のWhereIfは使用できません。
var query =
from tb in dataContext.TableOne
where tb.DateTimeCreated >= fromDate &&
tb.DateTimeCreated <= toDate.AddDays(1)
select tb;
if (!string.IsNullOrEmpty(reference))
{
query.Where(tb => tb.Reference = reference));
}
if (!string.IsNullOrEmpty(reference))
query = query.Where(tb => tb.Reference = reference));
やってみる
「一つ」でやるだけ
var query = (from tb in dataContext.TableOne
where (tb.DateTimeCreated >= fromDate && tb.DateTimeCreated <= toDate.AddDays(1)) && (string.IsNullOrEmpty(reference) || tb.Reference == reference)
select tb
);
またはアイブスが言うように、
query = query.Where(...)