【发布时间】:2018-10-15 07:27:48
【问题描述】:
我有以下 linq,我想将不同的条件传递给 where 子句,但出现错误:
var rslt = (from t in cr.faultStatAlt
join v in cr.errorCatGroup
on t.m_error_id equals v.m_error_id
join h in cr.masterAlarm on t.m_inv_error_details equals h.pc_group_pattern into ps
from h in ps.DefaultIfEmpty()
join s in cr.MasterDataTurbine on t.m_turbine_id equals s.m_turbine_id
where (whereClause)
group t.error_duration by v.m_error_subgroup_name into k
select new faulttest
{
m_error_subgroup = k.Key,
error_duration = Math.Round(k.Sum() / 3600, 2)
}).ToString();
我想让它动态的条件是:
Func<t_fault_stat_alt, bool> whereClause = t => t.m_date >= dt1 && t.m_date <= dt2 && t.m_grid_loss==true;
【问题讨论】:
-
我怀疑您必须将部分/全部从查询语法转换为方法语法。
-
@Fildor - 错误列在问题的标题中。
-
@just.another.programmer 哈哈,对了...我去喝杯咖啡...
-
你在调用你的 Func 吗?试试
whereClause.Invoke(parameter)或者干脆whereClause(parameter) -
您可以简单地以
Query格式的 Where 子句传递Func布尔逻辑,类似于where t.m_date >= dt1 && t.m_date <= dt2 && t.m_grid_loss==true。这会方便得多,因为您不是在运行时构造 Func