动态linq无法正常工作

时间:2013-07-18 19:31:36

标签: linq dynamic

我有问题。我想构建一个动态的LINQ查询,如下所示:

 var result = from li in datacTx.LIs
                     where 
                           (((StartDate != null) && (StartDate.Date != DateTime.MinValue)) ? li.Available <= StartDate.Date : true) &&
                           (((EndDate != null) && (EndDate.Date != DateTime.MinValue)) ? li.Expire <= EndDate.Date : true)
                     select new
                         {
                             A,
                             B,
                             C,
                             D
                         };

在调用此查询之前,我使用以下命令初始化StartDate和EndDate:

        StartDate = DateTime.MinValue;
        EndDate = DateTime.MinValue;

问题在于&#34; if&#34;总是错的我永远不会得到真正的&#34;如果StartDate和EndDate具有MinValue,则为branch。

1 个答案:

答案 0 :(得分:1)

尝试使用更简单的条件:

where ((StartDate == DateTime.MinValue || li.Available <= StartDate.Date) &&
       (EndDate == DateTime.MinValue || li.Expire <= EndDate))

但是,如果我要实现这样的东西,我实际上会动态创建查询:

var query = datacTx.LIs;
if(StartDate != DateTime.MinValue)
    query = query.Where(li => li.Available <= StartDate.Date);
if(EndDate != DateTime.MinValue)
    query = query.Where(li => li.Expire <= EndDate .Date);

var result = query.Select(x => new { A, B, C, D });