LINQ学习笔记:string类型的Value属性
不过, 如果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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |