C# 使用多个参数查询XML文件
首先是一点背景知识。我希望建立一个程序,为一家电子制造商消除对电子元件的认识,这是该程序的电阻部分。我选择了用XML编写,但在查询我希望的方式时遇到了问题 这是我的XML文件的一个示例C# 使用多个参数查询XML文件,c#,xml,parameters,C#,Xml,Parameters,首先是一点背景知识。我希望建立一个程序,为一家电子制造商消除对电子元件的认识,这是该程序的电阻部分。我选择了用XML编写,但在查询我希望的方式时遇到了问题 这是我的XML文件的一个示例 <?xml version="1.0" encoding="UTF-8"?> -<Resistors> -<Resistor> <ResistNo>RES144</ResistNo>
<?xml version="1.0" encoding="UTF-8"?>
-<Resistors>
-<Resistor>
<ResistNo>RES144</ResistNo>
<Value>2K 0.6w</Value>
<Band1>Red</Band1>
<Band2>Black</Band2>
<Band3>Black</Band3>
<Band4>Brown</Band4>
<Band5>Brown</Band5>
</Resistor>
</Resistors>
从这里我迷路了,我需要从“ResistNo”和“Value”中获取值,并将它们发布到txtResistNo.Text和txtValue.Text中。我一直在互联网上绞尽脑汁寻找更接近的东西,上面的代码与我找到的代码一样接近。您只需选择一个
:
var elements = xmlResist.Element("Resistors")
.Descendants("Resistor")
.Where(x => x.Element("Band1").Value == txtBand1.Text)
.Where(x => x.Element("Band2").Value == txtBand2.Text)
.Where(x => x.Element("Band3").Value == txtBand3.Text)
.Where(x => x.Element("Band4").Value == txtBand4.Text)
.Where(x => x.Element("Band5").Value == txtBand5.Text)
.Select(x => new
{
ResistNo = (string)x.Element("ResistNo"),
Value = (string)x.Element("Value")
});
此外,您还可以使用一个而不是五个来提高效率:
var elements = xmlResist.Element("Resistors")
.Descendants("Resistor")
.Where(x => x.Element("Band1").Value == txtBand1.Text &&
x.Element("Band2").Value == txtBand2.Text &&
x.Element("Band3").Value == txtBand3.Text &&
x.Element("Band4").Value == txtBand4.Text &&
x.Element("Band5").Value == txtBand5.Text)
.Select(x => new
{
ResistNo = (string)x.Element("ResistNo"),
Value = (string)x.Element("Value")
});
如果您想要单一结果,请使用First
或First或default
谢谢您,我非常喜欢效率。不过,我的耳朵后面有点湿。输入txtrestino.Text=elements是否正确。ResistNo@K_Specselect返回多个结果。如果在select之后使用First(),则可以得到一个结果,然后可以使用txtrestino.Text=elements.ResistNo
非常感谢。现在我必须解决新的异常System.Xml.XmlException未经处理消息=根级别的数据无效。第1行,位置1我相当确定XML文件格式正确。哦,好吧。再次感谢你。
var elements = xmlResist.Element("Resistors")
.Descendants("Resistor")
.Where(x => x.Element("Band1").Value == txtBand1.Text &&
x.Element("Band2").Value == txtBand2.Text &&
x.Element("Band3").Value == txtBand3.Text &&
x.Element("Band4").Value == txtBand4.Text &&
x.Element("Band5").Value == txtBand5.Text)
.Select(x => new
{
ResistNo = (string)x.Element("ResistNo"),
Value = (string)x.Element("Value")
});