将此linq查询转换为字符串类型列表? [英] Convert this linq query to list of string type?

查看:259
本文介绍了将此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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆