Как изменить значение указанного элемента c, если все элементы одинаковы? - PullRequest
1 голос
/ 16 апреля 2020

Извините, что отправил еще один вопрос на следующий день, но я действительно ошеломлен тем, как заставить это работать. Итак, в моей программе я получил форму, что при нажатии кнопки «Отправить» можно изменить определенный элемент c. Но выдает ошибку: «lEnumerable не содержит определения для SetElementValue»

Может кто-нибудь помочь, пожалуйста? Вот мой код.

        private void SubmitBtn_Click(object sender, EventArgs e)
        {
            string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
            string dataPath = Path.Combine(appDataPath, "Remembrall 2.0");
            string EventslistFullPath = Path.Combine(dataPath, "Events.xml");
            string[] Elementlist = new string[] { };
            Elementlist = XDocument.Load(EventslistFullPath).Descendants("Events").Elements("Event").Select(element => element.Value).ToArray();



            XElement EventDoc = XElement.Load(EventslistFullPath);

            var Eventselect = EventDoc.Descendants("Events"). Elements("Event").Where(eve => eve.Value == MainForm.ModDisc);

            if (string.IsNullOrEmpty(ModifyTexbox.Text) || Elementlist.Contains(ModifyTexbox.Text))

            {
                MessageBox.Show("Must be unique and have actual content.");
                this.DialogResult = DialogResult.None;
            }
            else
                Eventselect.SetElementValue("Event", ModifyTexbox.Text);

                EventDoc.Save(EventslistFullPath);
                this.DialogResult = DialogResult.OK;

        }


xml выглядит так

<Events>
  <Event>This is an example</Event>
  <Event>This is another example</Event>
</Events>

1 Ответ

1 голос
/ 16 апреля 2020

Измените строку:

 var Eventselect = EventDoc.Descendants("Events"). Elements("Event").Where(eve => eve.Value == MainForm.ModDisc);

на:

var Eventselect = EventDoc.Descendants("Events"). Elements("Event").Where(eve => eve.Value == MainForm.ModDisc).Single();

или на:

 var Eventselect = EventDoc.Descendants("Events"). Elements("Event").Single(eve => eve.Value == MainForm.ModDisc);

переменная должна содержать один элемент для SetElementValue(...) на работу. Where(...) без Single(...) возвращает Enumerable из нескольких элементов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...