快速业务通道

LINQ学习笔记:string类型的Value属性

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-13

不过, 如果element或者attribute存在并且包含一个空值(或者不正确的格式), 转换到nullable类型并不会让你就远离麻烦. 上述情况, 你将会得到一个FormatException.

我们也可以在LINQ查询中使用类型转换. 例如以下的查询返回”John”:

   1: var data = XElement.Parse (
   2:   @"<data>
   3:       <customer id=''1'' name=''Mary'' credit=''100''  />
   4:       <customer id=''2'' name=''John'' credit=''150''  />
   5:       <customer id=''3'' name=''Anne'' />
   6:     </data>");
   7:
   8: IEnumerable<string> query =
   9:   from cust in data.Elements( )
  10:   where (int?) cust.Attribute ("credit") > 100
  11:   select cust.Attribute ("name").Value;

转换到一个nullable的int类型避免了NullReferenceException的产生(Anne没有credit属性). 另一种解决方案是给加一个断言到where从句中.

   1: where cust.Attributes ("credit").Any()
   2: &&(int) cust.Attribute...

同样的原则也可以应用于查询元素的值.

值与混合的内容节点

由于有了Value属性, 你可能会好奇什么时候你才需要直接和XText节点打交道呢? 答案是: 当你拥有混合的内容的时候. 例如:

   1: <summary>
   2:   An XAttribute is <bold>not</bold> an XNode
   3: </summary>

一个简单的Value属性是不能够获取summary的全部内容的. summary元素包含了3个孩子:一个XText节点, 紧接着一个XElement, 然后再一个XText节点. 我们来看它是如何被构造的:

   1: XElement summary = new XElement ("summary",
   2:                       new XText ("An XAttribute is "),
   3:                       new XElement ("bold", "not"),
   4:                       new XText (" an XNode")
   5:                     );

有趣的是, 你依然还是可以查询summary的Value值, 这并不会引起任何的异常. 相反, 我们获得了每一个子节点的Value值的连接字符.

An XAttribute is not an XNode

重设summary的Value值也是合法的, 它将使用一个单一的XText节点替换前面提到的所子节点.

自动XText连接

当你增加简单内容到一个XElement的时候, X-DOM将其添加到已存在的XTe

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号