foreach (VXmlNode.VObject func in GetObjectsByPath("Function"))
{
BooleanExpression fexpr = func.GetPresenceCondition();
foreach (VXmlNode.VObject Objectparameter in func.GetObjectsByPath("Parameter") && func.GetObjectsByPath("Return"))
{
BooleanExpression parapresenceCondition = Objectparameter.GetPresenceCondition();
}
}
正如您在上面的代码中看到的那样,我想要的是:
foreach (VXmlNode.VObject Objectparameter in func.GetObjectsByPath("Parameter") && func.GetObjectsByPath("Return"))
在我的代码中,和条件不能存在于foreach
循环中,但有人可以告诉我相当于此。任何人都可以提出如何做的建议吗?我正在尝试获取XML对象并使用它们执行某些操作。任何帮助,将不胜感激。感谢。
答案 0 :(得分:1)
来自文档:
loadingView.setClickable(true);
因此,您可以添加多个条件loadingView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do something here if you want
}
});
答案 1 :(得分:1)
你想要的是Zip方法
string[] fruits = { "apple", "passionfruit", "banana", "mango",
"orange", "blueberry", "grape", "strawberry" };
IEnumerable<string> query =
fruits.TakeWhile((fruit, index) => fruit.Length >= index);
foreach (string fruit in query)
{
Console.WriteLine(fruit);
}
答案 2 :(得分:1)
不太确定你要做什么。代码没有任何意义。
func.GetObjectsByPath("Parameter") && func.GetObjectsByPath("Parameter")
&&
的两侧都有相同的代码。这是对的吗?
也就是说,你可以尝试使用LINQ SelectMany来压缩层次结构或Zip,如Luca建议的那样。
<强>更新强>
您可以使用Concat或Union。 Zip也可以做到这一点。取决于你想要的结果。
foreach(var item in func.GetOBjectsByPath("Par1").Concat(func.GetOBjectsByPath("Par2"))
答案 3 :(得分:1)
您的问题是模糊的,例如怎么可以
func.GetObjectsByPath("Parameter")
成为条件(即返回true
或false
),同时作为集合通过foreach
循环进行枚举?不过,我建议使用 Linq 及其Where
过滤器:
var source = GetObjectsByPath("Function")
.Where(func => func.GetObjectsByPath("Parameter")) // condition on func
.SelectMany(func => func.GetObjectsByPath("Parameter")) // get all parameters flatten
.Select(prm => prm.GetPresenceCondition());
foreach (BooleanExpression parapresenceCondition in source) {
...
}
请注意,您可以根据需要添加任意数量的条件:
var source = GetObjectsByPath("Function")
.Where(func => ...) // condition on func
.Where(func => ...) // && another condition on func
.SelectMany(func => func.GetObjectsByPath("Parameter")) // get all parameters flatten
.Where(prm => ... ) // condition on parameter
....
答案 4 :(得分:0)
看起来您只想在foreach
循环中执行语句,即
BooleanExpression parapresenceCondition = Objectparameter.GetPresenceCondition();
...适用于Objectparameter
和 func.GetObjectsByPath("Parameter")
返回的所有元素func.GetObjectsByPath("Return")
。
为此你只需要组合( concatenate )两个列表并迭代生成的列表,如下所示:
var parameters = func.GetObjectsByPath("Parameter");
var results = func.GetObjectsByPath("Return");
foreach (VXmlNode.VObject Objectparameter in parameters.Concat(results))
{
BooleanExpression parapresenceCondition = Objectparameter.GetPresenceCondition();
}