问题描述
我一直工作在查询中使用LINQ,但我已经有一个动态的where子句遇到障碍。我想检查一个条件,如果真然后添加到哪里我的查询。问题是,在其中使用我的范围变量之一从我的联接之一。我的工作查询是如下:
I‘ve been working on a query using LINQ but I’ve run into a snag with a dynamic where clause. I want to check for a condition and if true then add that where to my query. The problem is that the where is using one of my range variables from one of my joins. My working query is below:
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.ProjType codeS一类,所以我想说
TypeDesc is a type in db.ProjTypeCodes, so I want to say
if (sProjType != null)
{
query = query.Where(x => x.TypeDesc==sProjType);
}
但我只能用在哪里,在项目类型; AnonymousType#1不包含定义TYPEDESC......我怎么能使用动态凡ptc.TypeDesc?
But I can only use where with types in project; "AnonymousType#1 does not contain a definition for 'TypeDesc'..." How can I use a dynamic where on ptc.TypeDesc?
推荐答案
使用的IQueryable这里更多信息为什么
Use IQueryable here is more info why link
IQueryable<{CreateNewSelectObjects}> query = ... ;
if (sProjType != null)
{
query = query.Where(x => x.TypeDesc==sProjType);
}
这篇关于如何编写动态where子句加盟范围varible的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!