当前位置: 首页 > 知识库问答 >
问题:

如何区分不同的价值观?

孙清野
2023-03-14

我正在尝试构建一个选择唯一值组的查询。我知道如何对值进行分组并选择不同的值,但我不知道如何选择不同的值组,而不管所考虑元素的顺序如何。更准确地说:

我的XML是这样的:

<A>
    <B type="1">value1</prop>
    <B type="2">value2</prop>
    <B type="3">value3</prop>
    <B type="4">value4</prop>
<C>
    <D>XXX</D>
</C>
<C>
    <D>YYY</D>
</C>
</A>

<A>
    <B type="3">value3</prop>
    <B type="4">value4</prop>
    <B type="2">value2</prop>
<C>
    <D>XXX</D>
</C>
<C>
    <D>YYY</D>
</C>
</A>

在这里,我想将分组

价值1价值2价值3价值4

值2值3值4值1

只有当部分或全部值不同时,这两组值才应该是唯一的。

非常感谢你的帮助。


共有2个答案

司徒运锋
2023-03-14

尝试

var xDocument = XDocument.Parse(/*Your XML here*/);
var vals =
    //Find all A-Elements
    xDocument.Root.Elements("A")
        //Select all their B-Elements to one collection
        .SelectMany(a => a.Elements("B"))
        //Group the B-Items by their value
        .GroupBy(element => element.Value)
        //Select the keys of the IGrouping<TValue, XElement>
        .Select(element => element.Key)
        //Distinct them
        .Distinct();
宰父桐
2023-03-14
匿名用户

以下作品:

var doc = XDocument.Parse(xml);

var comparer = new ElementsComparer();

var result = doc.Descendants("B")
                .GroupBy(x => x.Parent)
                .Distinct(comparer);

class ElementsComparer : IEqualityComparer<IGrouping<XElement, XElement>>,
                         IEqualityComparer<XElement>
{
    public bool Equals(XElement lhs, XElement rhs)
    {
        return lhs.Value.Equals(rhs.Value);
    }

    public bool Equals(IGrouping<XElement, XElement> lhs,
                       IGrouping<XElement, XElement> rhs)
    {
        var x = lhs.OrderBy(a => a.Value);
        var y = rhs.OrderBy(a => a.Value);
        return x.SequenceEqual(y, this);
    }

    public int GetHashCode(XElement obj)
    {
        return obj.Value.GetHashCode();
    }

    public int GetHashCode(IGrouping<XElement, XElement> obj)
    {
        return 0;
    }
}

这将返回不同的组。如果一个组中的元素与另一个组中的元素具有相同的值,则该组被视为与另一个组相同。< br >不幸的是,我们需要一个完整的< code>IEqualityComparer实现来实现这一点。

 类似资料:
  • 问题内容: 我正在使用php中的分页进行搜索功能,下面是我的代码,但是每当我单击下一个链接时,搜索查询都不会采用通过POST传递的变量。你能帮我么.. 问题答案: 您的代码中有几个问题。 第一的: 您使用的变量不正确。您有,但您应该使用与变量相同的方式,如下所示: 第二: 您正在解释“发布”的概念,并错误地单击了链接。您需要使用下一个和上一个按钮进行的​​操作是一个隐藏的表单,其中包含您需要的所有

  • 我正在玩OpenTelemata,并有这样的设置: Golang,docker compose,3个服务,1个独立的开放式遥测采集器,1个Prometheus。 我将一些系统指标收集到一个独立的开放遥测收集器。这些指标是从3个不同的服务收集的,并且指标具有相同的名称。然后,Prometheus从开放遥测收集器获取数据。问题是我无法区分Prometheus中不同服务的指标,因为所有指标都具有相同的“

  • 我正在尝试获取 pyspark 中 cassandra 表的分区键的不同值。但是,pyspark 似乎不理解我,并完全迭代所有数据(很多),而不是查询索引。 这是我使用的代码,在我看来非常简单: 列“机器名”和“传感器名”一起构成了分区键(完整的模式见下文)。在我看来,这应该非常快,事实上,如果我在cql中执行这个查询,只需要几秒钟: 但是,火花作业大约需要 10 个小时才能完成。从 Spark

  • 本文向大家介绍利用Django-environ如何区分不同环境,包括了利用Django-environ如何区分不同环境的使用技巧和注意事项,需要的朋友参考一下 介绍 Django是一个Web框架——一套用于帮助开发交互式网站的工具。Django能够响应网页请求,还能让我们更轻松地读写数据库、管理用户等。本文主要介绍了关于利用Django-environ区分不同环境的相关内容,下面话不多说了,来一起

  • iBeacon规格说明: UUID、主值和次值提供iBeacon的标识信息。 主要值和次要值用于区分区域内的产品或元素。苹果公司的文档非常清楚如何做到这一点,商店的例子也非常好。 然而,只有当每个区域(或子区域)有一个元素类别时,所有这些都能很好地工作,但是如果我们希望应用程序能够区分同一区域内具有相同次要和主要元素的元素,这就不太好了。 是否有其他与iBeacon关联的唯一标识符可以被监视/检测

  • 问题内容: 这是下面给出的当前复杂查询。 还有另一列Training.TCode。我需要计算不同的Training.TCode,有人可以帮助我吗?如果您需要更多信息,请告诉我 问题答案: 尝试 编辑-现在请看一下… 采取以下SQL代码。第一个选择是SQL Server如何执行此操作,第二个查询应符合访问权限… 它返回以下内容: