我是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发送参数
答案 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