C# 使用linq to xml填充dropdownlist的更好方法

C# 使用linq to xml填充dropdownlist的更好方法,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,我有一堆dropdownlists,我使用linq从xml文件填充它们。 我尝试了以下方法来填充它们,但不知怎的,它是有效的, 唯一的问题是,当一个元素丢失时,例如subtitle,我在dropdownlist中得到一个空白。 此外,我没有得到每个dropdownlist的不同值,而是所有值。 请参阅下面的代码 var feeds = (from item in doc.Descendants("item") select new

我有一堆dropdownlists,我使用linq从xml文件填充它们。 我尝试了以下方法来填充它们,但不知怎的,它是有效的, 唯一的问题是,当一个元素丢失时,例如subtitle,我在dropdownlist中得到一个空白。 此外,我没有得到每个dropdownlist的不同值,而是所有值。 请参阅下面的代码

 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....
是否有比将每个值项拆分为单独的查询更好的方法,例如

干杯, 克里斯


我认为最简单的方法是保留原始查询,然后为每个下拉列表执行子查询,以确保他们关心的项中有一个值

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

我觉得这要简洁得多

hmmh,我就是这么想的。似乎没有真正优雅的方式来处理这种情况。无论如何谢谢你的提示。
cboChannel.DataSource = feeds.Where(x => !String.IsNullOrEmpty(x.channel)).ToList();