Linqif/else条件?我知道这可能是一个新手问题。有没有办法根据布尔值选择不同的搜索条件?在代码的后面,我想遍历该对象(alDisabledPrograms)。我知道if/else是不正确的,我把它放在那里是为了展示我希望如何处理它。我试图将其置于更大的if/else条件下,但之后无法通过alDisabledPrograms循环。思考?varalDisabledPrograms=xlServerRoles.Descendants("ServerRole")if(isDup){.Where(dp=>dp.Element("ServerType").Value==currentColumn.Substring(0,currentColumn.Length-1))}else{.Where(dp=>dp.Element("ServerType").Value==currentColumn)}.Descendants("ProgramName").Select(p=>p.Value).ToList();使用您的特定代码,答案非常简单:stringtargetColumn=isDup?currentColumn.Substring(0,currentColumn.Length-1):currentColumn;varalDisabledPrograms=xlServerRoles.Descendants("ServerRole").Where(dp=>dp.Element("ServerType").Value==targetColumn).Descendants("ProgramName").Select(p=>p.Value).ToList();但总的来说,要应用一个非常不同的查询,您可以使用:IEnumerableroles=xlServerRoles.Descendants("ServerRole");如果(isDup){roles=roles.Where(dp=>...);}else{roles=roles.Where(dp=>...);}varalDisabledPrograms=roles.Descendants(...)...或者您可以使用条件运算符构造正确的谓词:varfilter=isDup?(函数)(dp=>...):(函数)(dp=>...);varalDisabledPrograms=xlServerRoles.Descendants("ServerRole").Where(filter).Descendants("ProgramName").Select(p=>p.Value).ToList();在where子句中插入isDup:varalDisabledPrograms=xlServerRoles。后代(“ServerRole”).Where(dp=>isDup?(dp.Element(“ServerType”)。Value==currentColumn.Substring(0,currentColumn.Length-1)):(dp.Element(“ServerType”).Value==currentColumn)).Descendants("ProgramName").Select(p=>p.Value).ToList();我想这确实会将isDup测试移动到Where表达式本身。使用内联匿名函数而不是单行表达式,这样您就可以使用普通的if/else语句。像这样:varalDisabledPrograms=xlServerRoles.Descendants("ServerRole").Where(dp=>{if(isDup){returndp.Element("ServerType").Value==currentColumn.Substring(0,currentColumn.Length-1))}else{returndp.Element("ServerType").Value==currentColumn)}).Descendants("ProgramName").Select(p=>p.Value).ToList();你可以像这样构造查询:varquery=xlServerRoles.Descendants("ServerRole");if(isDup){query=query.Where(dp=>dp.Element("ServerType").Value==currentColumn.Substring(0,currentColumn.Length-1))}else{query=query.Where(dp=>dp.Element("ServerType").Value==currentColumn)}varalDisabledPrograms=query.Descendants("ProgramName").Select(p=>p.Value).ToList();在循环开始之前做一次:stringserverType=currentColumn;如果(isDup)serverType=currentColumn.Substring(0,currentColumn.Length-1);varalDisabledPrograms=xlServerRoles.Descendants("ServerRole").Where(dp=>dp.Element("ServerType").Value==serverType).Descendants("ProgramName").Select(p=>p.Value).ToList();把你放哪上面就是C#学习教程:Linqif/elsecondition?的所有内容分享,如果对大家有用,需要的话了解更多C#学习教程,希望大家多多关注——.Where(dp=>dp.Element("ServerType").Value==(isDup?currentColumn.Substring(0,currentColumn.Length-1):currentColumn))网络收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处:
