如何将参数传递给动态调节条件的LINQ

时间:2018-10-12 07:34:29

标签: c# linq

我是LINQ的新手,我需要在同一LINQ查询上传递不同的条件,例如:

  var rslt = (from t in cr.faultStat              
             where(parameter)
             select new{

             name=t.Name,
             Fname=t.fname

             });

在where中看到的参数是我想动态发送条件的部分,但是我不知道如何发送,因为在哪里可以接受布尔值,但是我想发送类似的东西:

 string parameter="date>"2018-10-10" && id="123"

通常我应该如何动态地向linq发送参数

1 个答案:

答案 0 :(得分:9)

我猜(根据您的评论)实际上您没有字符串,但是您有多个条件。然后我建议像这样编写您的查询:

var query = cr.faultStat;
// the user selected a min-date-filter?
if(minDate.HasValue)
{
    query = query.Where(x => x.Date > minDate.Value);
}
// the user selected a max-date-filter?
if(maxInclusiveDate.HasValue)
{
    query = query.Where(x => x.Date <= maxInclusiveDate.Value);
}
// the user selected an id-filter?
if(id.HasValue)
{
    query = query.Where(x => x.Id == id.Value);
}

var rslt = query
    .Select(x => select new
    {
        t.name,
        t.fname, ...
    });

实际上,由于延迟执行上述方法,甚至没有查询过数据库(或任何来源)。您必须使用foreach或执行此操作的方法:

int resultCount = rslt.Count(); // like this