linq to xml 基础请教...()

malin2670372 2011-01-20 03:59:57
<?xml version="1.0" encoding="utf-8"?>
<Table>
<Row>
<Column Name="ID">1</Column>
<Column Name="Name">张san</Column>
<Column Name="Age">20</Column>
</Row>
<Row>
<Column Name="ID">2</Column>
<Column Name="Name">李四</Column>
<Column Name="Age">16</Column>
</Row>
<Row>
<Column Name="ID">3</Column>
<Column Name="Name">王五</Column>
<Column Name="Age">30</Column>
</Row>
</Table>

上边的XML差不多是ORACLE导出来的样子,如何通过linq to xml 查询到 Age<25的 Rows
...全文
195 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
malin2670372 2011-01-21
  • 打赏
  • 举报
回复
感谢各位,有好的方法把结果集转换成实体存储到_list中?如下:
UserInfo.cs
public string Name{get;set;}
.....
IEnumerable<UserInfo> _list;

luozhongrong_06 2011-01-21
  • 打赏
  • 举报
回复
最近在学习中,不过我是在wcf中使用,用了关键字$Expand,但是不知道怎么取那些Expand实体的内容,很希望能听到大家提供$Expand方面的信息啊。
q107770540 2011-01-21
  • 打赏
  • 举报
回复
IEnumerable<UserInfo> _list=query.ToList();
q107770540 2011-01-21
  • 打赏
  • 举报
回复

XElement xmlPage = XElement.Parse(xml);
//更正一下 这样写更好一些
var query = from x in xmlPage.Descendants("Row")
from y in x.Elements("Column")
where y.Attribute("Name").Value=="Age"
&& int.Parse(y.Value)<25
select new UserInfo
{
ID=x.Elements("Column").First().Value,
Name=x.Elements("Column").Skip(1).First().Value,
Age=x.Elements("Column").Last().Value
};


class UserInfo
{
public string ID{get;set;}
public string Name{get;set;}
public string Age{get;set;}
}
paddypy 2011-01-20
  • 打赏
  • 举报
回复
也可以尝试另外一种方法例如可以通过xpath

nodeList = root.SelectNodes("//Row/Column[@Name='Age' and self <25 ]")
找到符合要求的节点
wuyq11 2011-01-20
  • 打赏
  • 举报
回复
string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<Table>
<Row>
<Column Name=""ID"">1</Column>
<Column Name=""Name"">张san</Column>
<Column Name=""Age"">20</Column>
</Row>
<Row>
<Column Name=""ID"">2</Column>
<Column Name=""Name"">李四</Column>
<Column Name=""Age"">16</Column>
</Row>
<Row>
<Column Name=""ID"">3</Column>
<Column Name=""Name"">王五</Column>
<Column Name=""Age"">30</Column>
</Row>
</Table>
";

XElement root = XElement.Parse(xml);
//XElement.Load("a.xml");
IEnumerable<XElement> purchaseOrders = from el in root.Elements("Row")
where
(from add in el.Elements("Column")
where
(string)add.Attribute("Name").Value=="Age" &&
Convert.ToInt32(add.Value) < 25
select add)
.Any()
select el;
foreach (XElement el in purchaseOrders)
Console.WriteLine(el);
}

<Row>
<Column Name="ID">1</Column>
<Column Name="Name">张san</Column>
<Column Name="Age">20</Column>
</Row>
<Row>
<Column Name="ID">2</Column>
<Column Name="Name">李四</Column>
<Column Name="Age">16</Column>
</Row>
claymore1114 2011-01-20
  • 打赏
  • 举报
回复

var rows = xe.Descendants("Column").Where(s => s.Attribute("Name").Value == "Age" && (int)s < 25)
.Select(s => s.Parent);
q107770540 2011-01-20
  • 打赏
  • 举报
回复

void Main()
{
string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<Table>
<Row>
<Column Name=""ID"">1</Column>
<Column Name=""Name"">张san</Column>
<Column Name=""Age"">20</Column>
</Row>
<Row>
<Column Name=""ID"">2</Column>
<Column Name=""Name"">李四</Column>
<Column Name=""Age"">16</Column>
</Row>
<Row>
<Column Name=""ID"">3</Column>
<Column Name=""Name"">王五</Column>
<Column Name=""Age"">30</Column>
</Row>
</Table>
";
XElement xmlPage = XElement.Parse(xml);
//更正一下 这样写更好一些
var query = from x in xmlPage.Descendants("Row")
from y in x.Elements("Column")
where y.Attribute("Name").Value=="Age"
&& int.Parse(y.Value)<25
select x;


foreach(var q in query)
{
Console.WriteLine(q);
}
/*
<Row>
<Column Name="ID">1</Column>
<Column Name="Name">张san</Column>
<Column Name="Age">20</Column>
</Row><Row>
<Column Name="ID">2</Column>
<Column Name="Name">李四</Column>
<Column Name="Age">16</Column>
</Row>
*/
}
q107770540 2011-01-20
  • 打赏
  • 举报
回复
void Main()
{
string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<Table>
<Row>
<Column Name=""ID"">1</Column>
<Column Name=""Name"">张san</Column>
<Column Name=""Age"">20</Column>
</Row>
<Row>
<Column Name=""ID"">2</Column>
<Column Name=""Name"">李四</Column>
<Column Name=""Age"">16</Column>
</Row>
<Row>
<Column Name=""ID"">3</Column>
<Column Name=""Name"">王五</Column>
<Column Name=""Age"">30</Column>
</Row>
</Table>
";
XElement xmlPage = XElement.Parse(xml);

var query = from x in xmlPage.Descendants("Row")
where int.Parse(x.Elements("Column").Last().Value)<25
select x;


foreach(var q in query)
{
Console.WriteLine(q);
}
/*
<Row>
<Column Name="ID">1</Column>
<Column Name="Name">张san</Column>
<Column Name="Age">20</Column>
</Row><Row>
<Column Name="ID">2</Column>
<Column Name="Name">李四</Column>
<Column Name="Age">16</Column>
</Row>
*/
}

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧