我如何创建一个 linq to xml 查询,以便使用我的结构将 xml 绑定到 DropDownList

本文关键字:xml 我的 结构 DropDownList 绑定 查询 创建 一个 to linq 何创建 | 更新日期: 2023-09-27 18:37:13

嗨,我有一个问题要 linq 到 XML ...

我有一个标题值的 XML 文件:

我的 XML:

<?xml version="1.0" encoding="utf-8"?>
<Titles>
  <values id="de">
    <value value="Herr" display="Herr"></value>
    <value value="Frau" display="Frau"></value>
  </values>
  <values id="cs">
    <value value="Herr" display="Pan"></value>
    <value value="Frau" display="Paní"></value>
  </values>
  <values id="en">
    <value value="Herr" display="Mr."></value>
    <value value="Frau" display="Mrs."></value>
  </values>
  <values id="es">
    <value value="Herr" display="Sr."></value>
    <value value="Frau" display="Sra."></value>
  </values>
  <values id="zh">
    <value value="Herr" display="先生"></value>
    <value value="Frau" display="女士"></value>
  </values>
</Titles>

我有一个下拉列表:

<td><asp:DropDownList ID="drp_GuestListViewAddDialog_GuestTitle" runat="server"></asp:DropDownList></td>

这是我的 C# 代码:

 XDocument x = XDocument.Load(Server.MapPath(@"~'App_Data'DropDown'Title.xml"));
                string data = (from item in x.Elements("Titles").Elements("values") where item.Attribute("id").Value == "de" select item.Attribute("display").Value).First();

更新:

例如,如果我想要id = "de",我想要这个

<values id="de">
    <value value="Herr" display="Herr"></value>
    <value value="Frau" display="Frau"></value>
  </values>

我如何创建一个 linq to xml 查询,以便使用我的结构将 xml 绑定到 DropDownList

编辑:这有效...

var x = XDocument.Load(@"~'App_Data'DropDown'Title.xml");
var list = x.Descendants("values")
    .Where(el => el.Attribute("id").Value == "de")
    .Descendants("value")
    .Select(el => new
    {
        value = el.Attribute("value").Value,
        display = el.Attribute("display").Value
    )
    .ToList();
drp_GuestListViewAddDialog_GuestTitle.DataValueField = "value";
drp_GuestListViewAddDialog_GuestTitle.DataTextField = "display";
drp_GuestListViewAddDialog_GuestTitle.DataSource = list;
drp_GuestListViewAddDialog_GuestTitle.DataBind();
var results = doc.Descendants("values")
         .Where(e => (string)e.Attribute("id") == "zh")
         .SelectMany(e => e.Elements("value"))
         .Select(v => new { Value = v.Attribute("value").Value, Text = v.Attribute("display").Value })
         .ToList();

然后绑定它:

 drp_GuestListViewAddDialog_GuestTitle.Enabled = true;
 drp_GuestListViewAddDialog_GuestTitle.DataSource = result;
 drp_GuestListViewAddDialog_GuestTitle.DataBind();
抱歉,我

无法检查它是否编译,我在这里飞翔。