【发布时间】:2016-08-23 06:23:01
【问题描述】:
我一直在使用 LINQ 进行查询,但我遇到了动态 where 子句的障碍。我想检查一个条件,如果为真,然后将其添加到我的查询中。问题是 where 正在使用我的一个连接中的一个范围变量。我的工作查询如下:
var query = from project in db.ProjMasters
join pd in db.ProjDetails on project.ProjMasterID equals pd.ProjMasterID
join dc in db.DivCodes on project.DivisionCode equals dc.DivCode1
join ec in db.EmpCodes on project.ProjManager equals ec.UserNm
join ptc in db.ProjTypeCodes on pd.ProjTypeCode equals ptc.ProjTypeCode1
join psc in db.ProjStatusCodes on pd.ProjStatusCode equals psc.ProjStatusCode1
where pd.ProjDeleteDate == null
orderby project.Title
select new
{
project.ProjMasterID,
project.Title,
pd.ProjDesc,
pd.ContractNum,
pd.ProjDetailID,
dc.DivNm,
}
if (sTitle != null)
{
query = query.Where(x => x.Title.Contains(sTitle));
}
TypeDesc 是 db.ProjTypeCodes 中的一个类型,所以我想说
if (sProjType != null)
{
query = query.Where(x => x.TypeDesc==sProjType);
}
但我只能在项目中使用 where 类型; “AnonymousType#1 不包含 'TypeDesc' 的定义...”如何在 ptc.TypeDesc 上使用动态 where?
【问题讨论】:
-
嗯,错误很明显,您没有选择 ptc.TypeDesc,只需将其添加到您的选择中...
-
感谢古斯曼!如果你知道我已经在这个圈子里转了多长时间。
标签: c# asp.net entity-framework linq