Ошибка Linq to Objects в разобранной коллекции - PullRequest
2 голосов
/ 12 мая 2011

У меня проблема при попытке проанализировать Xml для объектов с помощью Linq в приложении Windows Phone 7. Тот же самый запрос linq работает в silverlight.

Вот XML:

<?xml version="1.0" encoding="utf-8" ?>
<students>
  <student>
    <firstName>John</firstName>
    <lastName>Doe</lastName>
  </student>
  <student>
    <firstName>Jane</firstName>
    <lastName>Doe</lastName>
  </student>
</students>

И весь код, который у меня есть, находится в MainPage.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.Xml.Linq;

namespace WindowsPhoneApplication2
{
    public class Student
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();

            XDocument doc = XDocument.Load("my1.xml");

            var test = from students in doc.Elements("students").Elements("student")
                       select new Student()
                       {
                           FirstName = students.Element("firstName").Value,
                           LastName = students.Element("lastName").Value
                       };

            foreach (var _student in test)
            { }
        }
    }
}

Ошибка, которую я получаю, довольно странная (это внутри foreach, когда вы быстро смотрите тест): System.Collections.Generic.IEnumerator.Current = Не удалось оценить выражение. System.Collections.Generic.IEnumerator.Current = 'System.Collections.Generic.IEnumerable' не содержит определения для 'System' и не имеет метода расширения 'System', принимающего первый аргумент типа 'System.Collections.Generic.IEnumerable

В то же время внутри foreach _student var имеет правильное значение на каждой итерации ?! Эта ошибка - ошибка? Или откуда он взялся?

...: \

Edit:

Вот скриншот, где я вижу ошибку: enter image description here

Коллекция студентов оказалась правильной, но наличие этой ошибки пугает меня, когда я отправлю приложение в App Market.

Если это поможет, я использую эмулятор для отладки.

EDIT: Я добавляю этот скриншот, основываясь на ответе Десниса.

enter image description here

1 Ответ

1 голос
/ 12 мая 2011

Прежде всего добавьте ссылку на System.Linq в заголовке класса. Как в:

using System.Linq;

Проблема в вашем случае заключается в том, что вы устанавливаете точку останова в начале цикла foreach, когда ничего не выбрано. Создайте действие внутри цикла и установите там точку останова. Вы увидите, что значения будут иметь экземпляр Student.

...