让foreach运行一次

Imm*_*ith 9 c# xml foreach

所以问题是这个,我有一个针对我目前用于从XML文件的查询中检索数据的每个循环,然后将其放入字符串中; 像这样:

foreach (var value in dateQuery)
                date = value.Element("HistoryCreation").Value;
Run Code Online (Sandbox Code Playgroud)

我知道一个事实(基于xml文件存储值和使用的查询的方式),dateQuery中只有一个值.

因此,我想知道(为了使我的程序更有效并学习如何更好地编码),有没有更好的方法来做到这一点,或者foreach是唯一的方法?

tst*_*ter 18

你可以使用:

dateQuery.First().Element("HistoryCreation").Value
Run Code Online (Sandbox Code Playgroud)

如果查询中有多个项目,则不会失败.如果您希望在有多个项目时失败,请使用Single


Mar*_*ann 8

date = dateQuery.Single().Element("HistoryCreation").Value;
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 7

如果您使用的是.NET 3.5或更高版本,则可以使用扩展方法Enumerable.Single:

var value = dateQuery.Single();
date = value.Element("HistoryCreation").Value;
Run Code Online (Sandbox Code Playgroud)

那么如果你的假设'在dateQuery中只有一个值'是错误的,它将抛出一个异常.


Jho*_*re- 5

马克答案是迄今为止最好的答案,但我把我的答案用于说明foreach循环.

foreach (var value in dateQuery) {
    date = value.Element("HistoryCreation").Value;
    break;  // break current loop
}
Run Code Online (Sandbox Code Playgroud)


gkr*_*ers 5

一般而言,如果您知道只需要执行一次操作,则不应使用循环。