1
<?xml version="1.0" encoding="utf-8" ?>
<queryableData>
<table displayName="Shipments" dbName="Quotes">
<foreignKey column="CustomerId" references="CustomerRegistration"/>
<foreignKey column="QuoteStatusId" references="QuoteStatus"/>
<fields>
<field displayName="Quote Charge" dbColumn="QuoteCharge" type="Number"/>
<field displayName="Total Weight" dbColumn="TotalWeight" type="Number"/>
</fields>
</table>
<table displayName="Customers" dbName="CustomerRegistration">
<fields>
<field displayName="First Name" dbColumn="FirstName" type="Text" />
<field displayName="Last Name" dbColumn="LastName" type="Text"/>
</fields>
</table>
</queryableData>
我想包含顯示名稱,DbColumn和類型字段只有「行情」表中的匿名對象類型的列表。
我能夠得到兩個表的列表,下面的LINQ to XML代碼:
var xml = XElement.Load(@"C:\Sandbox\queryable.xml");
// Tables
var tables = from el in xml.Elements("table")
select new
{
Text = el.Attribute("displayName").Value,
Value = el.Attribute("dbName").Value
};
但我不知道怎麼去的字段值,其中表元素的DBNAME屬性是「行情」。我已經得到的最接近的是一個包含值的列表清單,而不是匿名的對象與具有dbColumn /顯示名對一個項目的列表:
var columns = from el in xml.Elements("table")
where el.Attribute("dbName").Value.Equals("Quotes")
select new LookupData {
Text = el.Elements("fields").Elements("field").Attributes().Where(x => x.Name == "displayName").Select(x => x.Value),
Value = el.Elements("fields").Elements("field").Attributes().Where(x => x.Name == "dbColumn").Select(x => x.Value)
};
所以我希望這個列表中:
LookupData#1
文字: 「報價費」
值: 「QuoteCharge」
LookupData#2
文字: 「總重量」
值: 「總權重」
和我得到這個代替:
LookupData#1
文本:包含兩個字符串的列表:[0] =「報價費用」,[1] =「總重量」
值:[0] = 「QuoteCharge」,[1] = 「總權重」