2016-09-23 24 views
-4

比較兩個列表與訂單如果列表1具有以下屬性:{A,B,C}和列表2具有以下屬性{A,C,B},比較它們應該給出結果「不匹配」。使用Linq

項目順序也需要相同。

+2

請定義你的問題是什麼。 – c0d3b34n

+0

我們需要更多關於你所要求和努力實現的內容。此外,您的代碼示例不會傷害 –

+0

驗證我的回答如果這樣的作品,然後接受或我會刪除,它沒有樂趣有無意義下來選民向下投票了正確的答案 –

回答

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; 
} 
+0

其實你可以用通過LINQ的數據幾乎一切。只需添加更多特定的擴展。 – eocron

+0

您的解決方案將是正確的,如果你'訂單/ Sort'無論是收藏,另外通過OP提到的問題會在畫面中,其中兩個集合不具有相同的順序,因此他們將是不平等的,這是不正確 –

+1

我相信他的問題與此相反。他說他們不應該匹配,如果他們在不同的順序。 @MrinalKamboj – meganaut

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)的

+0

將工作對所有類型的'默認Comparer',在案件類型複雜,那麼就需要明確的'IEqualityComparer' –

+1

爲什麼反對票,在-至少說明基本的禮貌來解釋,我確信下選民具有零想法關於編碼只是關於業務。我挑戰,告訴我代碼有什麼問題,這將回答OP問題100%。至少表現出最低限度的禮貌。 –

+0

我認爲他們因爲你沒有顯示出一些努力就直接回答OP,所以他們反對票。 –

0

不故作得到這個作爲回答,但對於未來的人來說,this應該工作:

enumerable1.SequenceEqual(enumerable2);