C#LINQ orderby
发布时间:2020-12-16 10:28:55 所属栏目:百科 来源:网络整理
导读:我有一个包含许多元素的Xelement. 我有以下代码来对它们进行排序: var calculation = from y in x.Elements("row") orderby y.Element("BUILD_ORDER").Value select new { calcAttribute = y.Element("ELEMENT").Value }; 哪个工作正常,直到BUILD_ORDER 10,
我有一个包含许多元素的Xelement.
我有以下代码来对它们进行排序: var calculation = from y in x.Elements("row") orderby y.Element("BUILD_ORDER").Value select new { calcAttribute = y.Element("ELEMENT").Value }; 哪个工作正常,直到BUILD_ORDER> 10,它在1之后命令10. 如果我想按严格的数字顺序,我将元素称为Int,这是正确的方法吗,还是LINQ有一个内置的扩展/方法? orderby Convert.ToInt32(y.Element("BUILD_ORDER").Value) 解决方法
LINQ to Objects没有内置转换,但LINQ to XML可以:
var calculation = from y in x.Elements("row") orderby (int) y.Element("BUILD_ORDER") select new { calcAttribute = y.Element("ELEMENT").Value }; 您有没有理由使用匿名类型,而不是仅仅选择您想要的值?例如: var calculation = from y in x.Elements("row") orderby (int) y.Element("BUILD_ORDER") select y.Element("ELEMENT").Value; 请注意,如果缺少BUILD_ORDER或ELEMENT子元素,则这两个都将引发异常.您可以使用转换为int来解决这个问题吗?而不是BUILD_ORDER的int,以及ELEMENT的字符串转换: var calculation = from y in x.Elements("row") orderby (int?) y.Element("BUILD_ORDER") select (string) y.Element("ELEMENT"); 如果存在BUILD_ORDER,则仍然会失败,但当然不能将其解析为整数. 如果您的数据应始终具有这些元素,则第一种形式更好,因为它会更早地检测到任何数据错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |