将此linq查询转换为字符串类型列表? [英] Convert this linq query to list of string type?
本文介绍了将此linq查询转换为字符串类型列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
var item = from items in xdoc.Descendants("database")
where (string)items.Element("server") == serv
select items.Elements("database").ToList();
foreach (var items in item)
{
lstDBName.Add(items.ToString());
}
return lstDBName;
XML :
XML :
<?xml version="1.0" encoding="utf-8"?>
<servers>
<server>s2
<database>db1</database>
<database>db2</database>
</server>
<server>s3
<database>db3</database>
<database>db4</database>
</server>
</servers>
推荐答案
我是转到XmlDocument和相关项目,因为它更容易通过XPath访问项目。例如,
I'd go for XmlDocument and associated items since it's easier there to access items via XPath. E.g.
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(file);
var xmlQuery =
xmldoc
.SelectNodes("/servers/server").Cast<XmlElement>()
.Where(e => e.SelectSingleNode("text()").Value.Trim() == "s3")
.SelectMany(e=>e.SelectNodes("database/text()").Cast<XmlText>(), (e,t)=>t.Value.Trim())
;
foreach (var item in xmlQuery)
{
Console.WriteLine(item);
}
问候
Andi
Regards
Andi
试试这个:
Try this:
string s = @"<?xml version='1.0' encoding='utf-8'?>
<servers><server>s2<database>db1</database><database>db2</database></server>
<server>s3<database>db3</database><database>db4</database></server>
</servers>";
XDocument xdoc = XDocument.Parse(s);
string serv = "s2";
var servers = xdoc.Descendants("server")
.Where(x=>x.Value.Substring(0,serv.Length)==serv)
.SelectMany(x=>x.Descendants("database").Select(d=>d.Value))
.ToList();
结果( List< string> ;
)
Result (List<string>
)
db1
db2
您的查询注释:
数据库
节点(子节点)无法查找服务器
node(父节点)。
服务器
节点不属于数据库
node,因为它在层次结构中。
Notes to your query:
A database
node (child node) can not look up at server
node (parent node).
A server
node does not belong to database
node, becuase it is up in a hierarchy.
这篇关于将此linq查询转换为字符串类型列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文