LINQ遍歷多個(gè)數(shù)組深入剖析
學(xué)習(xí)LINQ時(shí),經(jīng)常會(huì)遇到LINQ遍歷多個(gè)數(shù)組問題,這里將介紹LINQ遍歷多個(gè)數(shù)組問題的解決方法。
自從學(xué)習(xí)LINQ以來,我發(fā)現(xiàn)了很多使用LINQ來改善代碼的方式。每一個(gè)技巧都讓代碼寫起來更簡單,可讀性更強(qiáng)。
這里總結(jié)了這些技巧。我會(huì)介紹如何使用LINQ:
◆初始化數(shù)組
◆在一個(gè)循環(huán)中LINQ遍歷多個(gè)數(shù)組
◆生成隨機(jī)序列
◆生成字符串
◆轉(zhuǎn)換序列或集合
◆把值轉(zhuǎn)換為長度為1的序列
◆遍歷序列的所有子集
如果你在LINQ方面有心得也歡迎在評(píng)論中一起分享。
在一個(gè)循環(huán)中LINQ遍歷多個(gè)數(shù)組
有個(gè)朋友問我一個(gè)C#的問題:有沒有辦法在一個(gè)循環(huán)中LINQ遍歷多個(gè)數(shù)組?他的代碼差不多是這樣:
- foreach (var x in array1) {
- DoSomething(x);
- }
- foreach (var x in array2) {
- DoSomething(x);
- }
這樣的話,循環(huán)主體會(huì)很大,而且他也不希望這樣重復(fù)的代碼。但是,他又不希望創(chuàng)建一個(gè)數(shù)組來保存array1和array2的所有元素。LINQ提供了一種優(yōu)雅的解決方案:Concat操作。我們可以使用單個(gè)循環(huán)來重寫上面的代碼,如下:
- foreach (var x in array1.Concat(array2)) {
- DoSomething(x);
- }
注意,由于LINQ在枚舉器級(jí)別進(jìn)行操作,他不會(huì)產(chǎn)生新的數(shù)組來保存array1和array2的元素。因此,除了優(yōu)雅之外,這個(gè)方案還很高效。
【編輯推薦】