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);

クエリが1つの結果しか返さないことがわかっている場合でも、.Firstが必要な理由を誰かが説明できますか?

4

1 に答える 1

1

その理由は、IEnumerable<T>結果が 1 つしかない場合でも、通常の LINQ クエリは常に を返すためです。追加Firstすると、クエリによって返される最初の要素が返されます。1 つしかないことが確実な場合は、 も使用できますSingle

于 2012-08-15T10:12:13.370 に答える