2012-11-15 78 views
1

,如果我們有一維數組,我們可以使用下面,看看是否所有的元素都等於3:檢查在二維數組的所有元素具有相同的值

int[] t = Enumerable.Repeat(3, 10).ToArray(); 

if (t.All(item => item.Equals(3))) MessageBox.Show("all elements equals to 3"); 

但如果我有一個2D-數組,我怎麼能檢查是否所有元素都等於3(無任何for循環):

int[,] t2D= new int[,] { { 3, 3 }, { 3, 3 }, { 3, 3 }, { 3, 3 } }; 

    if(CHECK IF ALL ELEMENTS IN **t2D** are equal to 3) 

       { 
       MessageBox.Show("all elements equals to 3"); 
       } 

我應該把在if語句?

+3

沒有任何的for循環?好的...考慮到All()使用for循環? ()或foreach() – lboshuizen

+0

@lboshuizen:如果你定義了一個2D數組: int [,] tt = new int [3,4]; .All()不是您可以使用的方法的一部分。嘗試tt.All =>沒有爲2D陣列案例定義方法 –

回答

3

2D陣列是enumerable type(但它實現非泛型IEnumerable)。枚舉器列舉了2D數組中的所有項目。因此,只有你需要做的事情 - 投公司項目int(從而獲取IEnumerable<int>),並應用All

t2D.Cast<int>().All(x => x == 3) 
+0

@ lazyberezovsky:aw,謝謝。只是爲了學習的目的,我怎麼能區分非泛型可枚舉類和枚舉類?或讓我們重新修飾它:爲什麼泛型類型支持.All()方法或非泛型不是? –

+0

@farzinparsa All()是類型爲IEnumerable 的擴展方法(在Enumerable類中定義)或IQueryable 。這就是爲什麼只有通用序列支持Linq方法。 –

+0

@ lazyberezovsky:非常感謝,那是豐富的 –

相關問題