【问题标题】:Linq to XML Noob question - distinct and order by on attributesLinq to XML Noob 问题 - 不同并按属性排序
【发布时间】:2009-06-20 22:13:41
【问题描述】:

我刚刚开始使用 Linq to XML,我有一个包含如下记录的简单文档:

<record date="6/27/2002" symbol="DG" price="15.00" />

我想要一个不同符号的列表作为字符串,按顺序。

这给了我所有属性的无序列表,但我卡住了

var query =
  from e in xml.Elements()
  select e.Attribute("symbol");

如何修改它以提供我想要的?

【问题讨论】:

    标签: linq


    【解决方案1】:

    怎么样:

        var query = (from e in xml.Elements()
                     let symbol = (string)e.Attribute("symbol")
                     where symbol != null
                     orderby symbol
                     select symbol).Distinct();
    

    【讨论】:

    • Enumerable.Distinct() 不会对 .net 3.5 中的对象重新排序,但文档在未来对此不做任何承诺。我会先区分,然后将排序应用于不同的集合。 msdn.microsoft.com/en-us/library/bb348436.aspx "方法返回无序序列"
    • 还不错 - 好地方。作为一个实现细节,它目前确实保留了顺序 - 但你是对的:文档不保证这一点。
    【解决方案2】:

    我会用 lambda 语法来做到这一点:

    var query = xml.Elements()
                   .Select(e => (string)e.Attribute("symbol"))
                   .Distinct()
                   .OrderBy(x=>x);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多