лучший способ заполнить выпадающий список с linq в xml - PullRequest
0 голосов
/ 17 февраля 2009

У меня есть несколько выпадающих списков, которые я заполняю из XML-файла, используя linq. Я пробовал следующее, чтобы заполнить их, и это как-то работает, единственная проблема заключается в том, что когда элемент отсутствует, например, Подзаголовок я получаю пустое место в выпадающем списке. Также я получаю не отдельные значения каждого выпадающего списка, а все значения. Смотрите код ниже

 var feeds = (from item in doc.Descendants("item")

                     select new
                     {
                         channel = (string)item.Element("channel") ?? null,
                         specialtoken = (string)item.Element("specialtoken") ?? null,
                         subchannel = (string)item.Element("subchannel") ?? null,
                         subtitle = (string)item.Element("subtitle") ?? null,
                     }).ToList().Distinct();


        cboChannel.DataSource = feeds;
        cboChannel.DataBind();

        cboSpecialToken.DataSource = feeds;
        cboSpecialToken.DataBind();

        cboSubChannel.DataSource = feeds;
        cboSubChannel.DataBind();

        cboSubtitle.DataSource = feeds;
        cboSubtitle.DataBind();
        ...And so on....

Есть ли лучший способ, чем разделить каждый элемент значения на отдельный запрос, например,

Cheers, Chris

var specialtoken = (from item in doc.Descendants("item")
                     select new
                     {
                         specialtoken = (string)item.Element("specialtoken") ?? null,
                     }).ToList().Distinct();


var channel= (from item in doc.Descendants("item")
                     select new
                     {
                         channel = (string)item.Element("channel") ?? null,
                     }).ToList().Distinct();
etc. etc.

1 Ответ

1 голос
/ 17 февраля 2009

Я думаю, что самый простой способ - сохранить исходный запрос, но затем выполнить подзапрос для каждого из раскрывающихся списков, который гарантирует, что в элементе, который им нужен, есть значение.

cboChannel.DataSource = feeds.Where(x => !String.IsNullOrEmpty(x.channel)).ToList();

Я считаю, что это гораздо более кратко

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