【发布时间】:2016-05-31 14:16:55
【问题描述】:
我想知道如何将我编写的这个 linq 查询绑定到 C# Web 应用程序中的下拉列表。它正在调用一个 XML 文件。我会发布一些 XML,但它的价值是 2k 行,所以我只会发布一个 sn-p。
public void ddlBinding()
{
// Getting the XML file imported in
string filePath = @"C:\Projects\MEAS\Central\MillView\PVDA\Main\PVDA\PVDA.Web\MillData.xml";
// Set the file path
XDocument xDoc = XDocument.Load(filePath);
// Setting a variable to dump the data into the dropdownlist
var dropDownDataList = GetMachineInfo(xDoc, 2);
}
// LINQ Queries for binding
public List<Machine> GetMachineInfo(XDocument xDoc, int machineNumber)
{
// Get the elements under a specific machine and create
// a list of Machine objects
// Different Linq queries to get the machine data entered
// This needs to be incorporated for the mill also, this does not get the mill name
return xDoc.XPathSelectElements("./mmsdata/mill/mach")
.Where(x => x.Attribute("n").Value == machineNumber.ToString())
.Elements()
.Select(x => new Machine
{
sensName = x.Value,
snsrN = Convert.ToInt32(x.Attribute("n").Value),
calctype = x.Attribute("calctype").Value
}).ToList();
}
public class Machine
{
// Getting all the objects to the machine
public int snsrN { get; set; }
public string calctype { get; set; }
public string sensName { get; set; }
}
<?xml version="1.0" encoding="UTF-8"?>
<mmsdata>
<timestamp>Fri Jan 30 08:46:13 EST 2015</timestamp>
<mill n="AG" name="Augusta, GA">
<ds>
<server>agppra</server>
<server>agpprb</server>
</ds>
<mach n="1">
<srn n="1" calctype="2CV">RL.CLP (1)</srn>
<srn n="3" calctype="2CV">RL.CTWTIR (3)</srn>
<srn n="4" calctype="2CV">RL.CTWTBETA (4)</srn>
<srn n="6" calctype="2CV">RL.DNS (6)</srn>
<srn n="7" calctype="2CV">RL.BSWT (7)</srn>
<srn n="8" calctype="2CV">CA.BSWT (8)</srn>
<srn n="9" calctype="2CV">SP.BSWT (9)</srn>
<srn n="10" calctype="RAW">RL.MST (10)</srn>
<srn n="11" calctype="RAW">CA.MST (11)</srn>
<srn n="12" calctype="RAW">SP.MST (12)</srn>
<srn n="13" calctype="2CV">RL.BNDRWT (13)</srn>
<srn n="14" calctype="2CV">CA.BNDRWT (14)</srn>
<srn n="15" calctype="2CV">SP.BNDRWT (15)</srn>
<srn n="71" calctype="2CV">RL.ICMST (71)</srn>
<srn n="72" calctype="2CV">CA.LATEX (72)</srn>
<srn n="73" calctype="2CV">RL.COLOR (73)</srn>
<srn n="74" calctype="2CV">RL.CLAY (74)</srn>
<srn n="75" calctype="2CV">RL.LATEX (75)</srn>
<srn n="76" calctype="2CV">CA.CLAY (76)</srn>
<srn n="77" calctype="2CV">CA.ICMST (77)</srn>
<srn n="78" calctype="2CV">CA.ICCTWT (78)</srn>
<srn n="91" calctype="2CV">CTRL.HDBOXSP (91)</srn>
<srn n="92" calctype="2CV">CTRL.CTWTSP (92)</srn>
<srn n="93" calctype="2CV">CTRL.HDBOXFB (93)</srn>
<srn n="94" calctype="2CV">CTRL.CTWTFB (94)</srn>
</mach>
<mach n="2">
<srn n="1" calctype="2CV">RL.CLP (1)</srn>
<srn n="4" calctype="2CV">RL.CTWTBETA (4)</srn>
<srn n="7" calctype="2CV">RL.BSWT (7)</srn>
<srn n="8" calctype="2CV">CA.BSWT (8)</srn>
<srn n="9" calctype="2CV">SP.BSWT (9)</srn>
<srn n="10" calctype="RAW">RL.MST (10)</srn>
<srn n="11" calctype="RAW">CA.MST (11)</srn>
<srn n="12" calctype="RAW">SP.MST (12)</srn>
<srn n="13" calctype="2CV">RL.CNDWT (13)</srn>
<srn n="14" calctype="2CV">CA.CNDWT (14)</srn>
<srn n="15" calctype="2CV">SP.CNDWT (15)</srn>
<srn n="81" calctype="RAW">IC.MSTCS (81)</srn>
<srn n="82" calctype="2CV">IC.CTWT1 (82)</srn>
<srn n="84" calctype="RAW">RL.MSTCS (84)</srn>
<srn n="85" calctype="2CV">RL.CTWT2 (85)</srn>
<srn n="86" calctype="2CV">RL.CTWTIR (86)</srn>
<srn n="91" calctype="RAW">CTRL.HDBOXSP (91)</srn>
<srn n="93" calctype="2CV">CTRL.THRMOSP (93)</srn>
<srn n="94" calctype="2CV">CTRL.CTWTSP (94)</srn>
</mach>
【问题讨论】:
-
这和the one you asked 4 days ago 是同一个问题(你今天早上问的那个你已经删除了)。为什么不把那个做得更好呢?