Linq to SQL - 运行时多个where子句

时间:2010-12-08 13:14:43

标签: c# linq-to-sql where-clause dynamic-linq

我正在尝试完成此操作,但只有在查询运行时才会使用我的第一个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));
}

2 个答案:

答案 0 :(得分:3)

  if (!string.IsNullOrEmpty(reference))
        query = query.Where(tb => tb.Reference = reference));

答案 1 :(得分:0)

尝试

只需在“一个”

中完成
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(...)