2016-06-30 65 views
1

我有一個string[][] jaggedarray如何在字符串[] []中以不同順序刪除相同的值?

  1. Hello1,Hello2,Hello3
  2. Hello4,Hello5,Hello6
  3. Hello3,Hello1,Hello2

我試圖通過所有字符串會在

foreach(var single in jaggedarray) 
{ 

} 

但由於推杆的複雜性而丟失了將所有值存儲在一個額外的數組中,並將每個字段與單個字段進行比較以做出決定。

我現在所做的是爲了每串字母所以

  1. Hello1,Hello2,Hello3
  2. Hello4,Hello5,Hello6
  3. Hello3,Hello1,Hello2

成爲

  1. Hello1,Hello2,Hello3
  2. Hello4,Hello5,Hello6
  3. Hello1,Hello2,Hello3

,然後使用不同的()就可以了。

它的工作方式,但我正在尋找一個優雅的方式,因爲現在我有很多來回轉換我的代碼。

功能看起來像什麼可以刪除1.3.,因爲它們包含相同的值但順序不同?

+0

只是被挑剔,但'字符串[] []'是不是一個二維數組 - 這是一個*交錯數組*。 'string [,]'是2D的。 – Enigmativity

+0

您能否將輸入數據顯示爲有效的C#代碼和期望的輸出?如果你能顯示你所嘗試過的東西,即使它不起作用甚至不能編譯也是非常棒的。 – Enigmativity

回答

3

這個工作對我來說:

var jaggedarray = new [] 
{ 
    new [] { "Hello1", "Hello2", "Hello3" }, 
    new [] { "Hello4", "Hello5", "Hello6" }, 
    new [] { "Hello3", "Hello1", "Hello2" }, 
}; 

jaggedarray = 
    jaggedarray 
     .Aggregate(
      new string[0][], 
      (a, x) => 
       a.Any(y => !x.Except(y).Any()) 
        ? a 
        : a.Concat(new [] { x }).ToArray()); 

基本上,這個代碼開始與空交錯數組(new string[0][]),它通過jaggedarray迭代,並且只增加每個子陣列,如果有不完全存在任何數組相同的元素。然後它將最終輸出重新分配到jaggedarray

我得到這個:

result

+0

請解釋一下,你的代碼是幹什麼的。 –

+0

@VitalisHommel - 完成。 – Enigmativity

+0

你能幫我解決這個問題嗎:http://stackoverflow.com/questions/38120664/how-to-group-by-on-2-child-entities-and-get-total-of-both-this-兒童實體 –

相關問題