使用Linq将两个列表与订单进行比较

时间:2016-09-23 06:36:51

标签: c# linq

如果列表1具有以下属性:{A,B,C}且列表2具有以下属性{A,C,B},则比较它们应该给出结果"不匹配"。

商品订单也必须相同。

3 个答案:

答案 0 :(得分:1)

不是假装将此作为答案,但对于来到这里的未来人员,this应该有效:

{ 
   id: "114898379136253"
   leadgen_export_csv_url: "https://www.facebook.com/ads/lead_gen/export_csv/?id=379136253&type=form&source_type=graph_api",
   locale: "en_US"
   name: "Untitled form 11/7/2017"
   status: "ACTIVE"
}

答案 1 :(得分:0)

我认为你不能在Linq中做到这一点......

尝试这样的事情

public bool CompareOrderedLists<T>(List<T> one, List<T> theOther)
{
    if(one.Length != theOther.Length) return false;

    for(var i = 0; i < one.Length; i++)
    {
        if(one[i] != theOther[i]) return false;
    }
    return true;
}

答案 2 :(得分:0)

  

你想要什么?

比较两个列表,包含任何元素顺序。

以下是通用代码:

internal class GenericListComparer<T>
{
    internal static bool Compare(List<T> firstCollection, List<T> secondCollection)
    {
        return firstCollection.TrueForAll(secondCollection.Contains) &&
               secondCollection.TrueForAll(firstCollection.Contains);
    }
}
  

用法:

List<int> aList = new List<int> { 1,2,3,4};

List<int> bList = new List<int> { 1,4,3,2};

bool result  = GenericListComparer<int>.Compare(aList,bList); // Matched

bList = new List<int> { 1,4,3,2,5};

result  = GenericListComparer<int>.Compare(aList,bList); // Un-Matched
  

时间复杂度 - O(n)