Linq To Xml 返回按字母顺序排序的不同值列表

唐辛克莱

我一直在 Linqpad 上玩,试图做到这一点,但我一直在想念。考虑以下:

//<SpeciesSizes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
// < SpeciesSize >
//  < DisplayCode > CAT </ DisplayCode >
//  < EnglishName > Wolffishes(= Catfishes) nei </ EnglishName >
//      < State > FRE </ State >
//      < Presentation > BMS </ Presentation >
//      < Freshness > SO </ Freshness >
//      < Size > 9 </ Size >
//      < Description > Species not included in the common marketing standards</Description>
//       </SpeciesSize>
//  <SpeciesSize>
//    <DisplayCode>CAT</DisplayCode>
//         <EnglishName>Wolffishes(= Catfishes) nei </ EnglishName >
//          < State > FRE </ State >
//          < Presentation > FIL </ Presentation >
//          < Freshness > SO </ Freshness >
//          < Size > 9 </ Size >
//          < Description > Species not included in the common marketing standards</Description>
// </SpeciesSize>
//  < SpeciesSize >
//  < DisplayCode > FLE </ DisplayCode >
//  < EnglishName > European flounder </ EnglishName >
//     < State > FRE </ State >
//     < Presentation > GUT </ Presentation >
//     < Freshness > E </ Freshness >
//     < Size > 1 </ Size >
//     < Description > According to AnnexII of Council R. 2406 / 96 </ Description >
//      </ SpeciesSize >
// < SpeciesSize >
//       < DisplayCode > GUX </ DisplayCode >
//       < EnglishName > Gurnards, searobins nei</EnglishName>
//       <State>FRO</State>
//       <Presentation>ROE</Presentation>
//       <Freshness>SO</Freshness>
//       <Size>9</Size>
//       <Description>Species not included in the common marketing standards</Description>
//  </SpeciesSize>
//</SpeciesSizes>
static string path = @"C:\Users\dom\Documents\Speciescrossreference.xml";

void Main()
{
    XDocument doc = XDocument.Load(path);

    var names = from n in doc.Root.Descendants("SpeciesSizes")
    group n by n.Element("SpeciesSize") into g
    select new {
        name = g.Element("EnglishName").Distinct().ToList()
    };


    names.Dump();

}

大约有 4000 个<SpeciesSize>元素,其中大约有 150 个独特的英文名称。

我已经在 SO 上阅读了各种答案,并从中吸取了一些东西来拼凑我在这里的内容,但显然我未能理解这些答案中展示的所有语法。

有人能告诉我我做错了什么,以便我以后能够构造其他查询(针对相同的 xml),这些查询可能涉及对不同元素进行分组。

鉴于代码示例顶部的示例 xml,我将查看 atr 返回以下内容:

  • 欧洲比目鱼
  • Gurnards, searobins nei
  • 狼鱼(=鲶鱼) nei
针背

如果您的示例中没有空格,您可以使用:

var names = from n in doc.Root.Descendants("SpeciesSize")
            group n by n.Element("EnglishName").Value into g
            select new
            {
                name = g.Key
            };

更新@CodingYoshi:
是的,没错。如果只是读取名称,您可以执行以下操作:

var names = doc.Root.Descendants("EnglishName")
    .Select(item => item.Value)
    .Distinct()
    .OrderBy(item => item);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

LINQ to XML 与不同的文件

来自分类Dev

Linq to XML返回空

来自分类Dev

按属性值字母顺序对XML文件进行排序

来自分类Dev

Visual Studio LINQ for XML子标记值的不同列表

来自分类Dev

按字母顺序对XML进行排序

来自分类Dev

Linq to XML按降序排列?

来自分类Dev

Linq to XML查询返回null

来自分类Dev

LINQ to XML替换值问题

来自分类Dev

使用Linq访问XML的值

来自分类Dev

使用Linq to Xml获取Xml属性的值

来自分类Dev

用Linq排序列表,并按字母顺序排列

来自分类Dev

使用Linq C#对多层XML排序

来自分类Dev

LINQ to XML 查询无法按预期工作

来自分类Dev

LINQ按特定列返回不同的值

来自分类Dev

用于XML解析的Linq返回null元素

来自分类Dev

使用linq将员工返回xml

来自分类Dev

用于XML解析的Linq返回null元素

来自分类Dev

按名称标签的字母顺序对 xml 文件进行排序

来自分类Dev

使用LINQ查询XML以返回不同的子元素

来自分类Dev

C# 使用 Linq to XML 对 XML 文件进行排序

来自分类Dev

C# 使用 Linq to XML 对 XML 文件进行排序

来自分类Dev

使用linq to xml从XML文档获取XElements列表的XElements列表

来自分类Dev

Linq to XML以基于属性检索值

来自分类Dev

LINQ to XML:如何按值获取所有元素

来自分类Dev

XML使用LINQ to XML比较元素和值

来自分类Dev

使用XML到Linq获取XML元素值

来自分类Dev

如何使用Linq to XML获得这些XML值?

来自分类Dev

xml Linq to XML的根节点中的属性值

来自分类Dev

Linq 2 XML不返回基于属性值的元素