嗨,我有一个问题要 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_DataDropDownTitle.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>
编辑:这有效...
var x = XDocument.Load(@"~App_DataDropDownTitle.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();
抱歉,我无法检查它是否编译,我在这里飞翔。