gpt4 book ai didi

c# - Linq if/else 条件?

转载 作者:太空狗 更新时间:2023-10-29 23:59:00 26 4
gpt4 key购买 nike

我知道这可能是一个新手问题。有没有办法根据 bool 值选择不同的搜索条件?在代码的后面,我想遍历对象 (alDisabledPrograms)。我知道 if/else 不正确,我把它放在那里是为了展示我希望如何处理它。我试图将它放在一个更大的 if/else 条件中,但后来无法通过 alDisabledPrograms 循环。想法?

var alDisabledPrograms = 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();

最佳答案

使用您的特定代码,答案非常简单:

string targetColumn = isDup ? currentColumn.Substring(0, currentColumn.Length - 1)
: currentColumn;
var alDisabledPrograms = xlServerRoles.Descendants("ServerRole")
.Where(dp => dp.Element("ServerType").Value == targetColumn)
.Descendants("ProgramName")
.Select(p => p.Value)
.ToList();

但一般来说,要应用非常不同的查询,您可以使用:

IEnumerable<XElement> roles = xlServerRoles.Descendants("ServerRole");
if (isDup)
{
roles = roles.Where(dp => ...);
}
else
{
roles = roles.Where(dp => ...);
}
var alDisabledPrograms = roles.Descendants(...)
...

或者您可以使用条件运算符来构造正确的谓词:

var filter = isDup ? (Func<XElement, bool>)(dp => ...)
: (Func<XElement, bool>)(dp => ...);
var alDisabledPrograms = xlServerRoles.Descendants("ServerRole")
.Where(filter)
.Descendants("ProgramName")
.Select(p => p.Value)
.ToList();

关于c# - Linq if/else 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15909926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com