我是 C# 新手,正在大学学习我的第一门课程。我认为这是一个问题,instantiation但这就是我所追求的。
我想从te.ED不必经过多个for each循环的情况中获取值,就好像答案是“否”,那么就不需要经过循环并提取多个数据元素(未显示)。有没有办法在执行所有循环之前检查该值for each?
代码在这里
TR reply = service.track(request);
foreach (CTD ctd in reply.CTD)
{
foreach (TD td in ctd.TD)
{
if (td.Events != null)
{
foreach (TE te in td.Events)
{
if (te.TimestampSpecified)
{
//This is where the field I am after exists
if (te.ED == "YES")
Console.WriteLine("The answer is yes");
else
Console.WriteLine("The answer is no");
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据 @Anis Programmer 的评论 - 我相信您希望看到TD类中的元素CTD。如果是这种情况 - 见下文
[System.Xml.Serialization.XmlElementAttribute("TD")]
public TD[] TD {
get { return this.tdf; }
set { this.tdf = value; }
}
Run Code Online (Sandbox Code Playgroud)
根据下面 @Neel 的回答 - 我非常接近语法
var result = reply.CTD.SelectMany(c1 => c1.TD)
.SelectMany(c2 => c2.Events.Select(c3 => c3.TimestampSpecified));
foreach (var ltr in result)
Console.WriteLine(ltr)
Run Code Online (Sandbox Code Playgroud)
现在的问题是foreach循环进行了两次传递,两次返回的值是True
我需要在此语法中更改什么?
我认为你可以像这样使用 LinQ foreach:
foreach (
var te in from ctd in reply.CTD
from td in ctd.TD
where td.Events != null
from te in td.Events
where te.TimestampSpecified
select te)
{
Console.WriteLine(te.ED == "YES" ? "The answer is yes" : "The answer is no");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2358 次 |
| 最近记录: |