0

这是我的 xml 文件:

<Corsi>
  <corso ID="0" nome="Corso 1" quota="100" dataCorso="24/08/2012"></corso>
  <corso ID="1" nome="Corso 2" quota="100" dataCorso="04/09/2012"></corso>
  <corso ID="2" nome="Corso 3" quota="100" dataCorso="14/09/2012"></corso>
  <corso ID="3" nome="Corso 4" quota="100" dataCorso="20/08/2012"></corso>
  <corso ID="4" nome="Corso 5" quota="100" dataCorso="30/09/2012"></corso>
</Corsi>

查询1:工作

var QUERY = docCorsi.Descendants("corso")
            .Where(a => (int)a.Attribute("ID") == Convert.ToInt16(txtNomeAgenzia.Text))
            .Select(a =>a.Attribute("dataCorso").Value)
            .First();

查询2:不起作用

var QUERY = docCorsi.Descendants("corso")
            .Where(a => (int)a.Attribute("ID") == Convert.ToInt16(txtNomeAgenzia.Text))
            .Select(a =>a.Attribute("dataCorso").Value);

任何人都可以解释为什么 .First 是必要的,即使我确定查询只返回一个结果?

4

1 回答 1

1

原因是普通的 LINQ 查询总是返回一个IEnumerable<T>,即使只有一个结果。追加First返回查询返回的第一个元素。如果您确定只能有一个,您也可以使用Single.

于 2012-08-15T10:12:13.370 回答