Linq查詢二維數(shù)組淺析
在向大家詳細(xì)介紹Linq查詢二維數(shù)組之前,首先讓大家了解下二維數(shù)組無(wú)法直接轉(zhuǎn)換為IEnumerable<T>類型,然后全面介紹Linq查詢二維數(shù)組。
Linq查詢二維數(shù)組
以下代碼為在一個(gè)4*4的二維int數(shù)組中將大于5的元素查出:
- static void Main( string [] args)
- {
- int [,] array = new int [4, 4];
- for ( int i = 0; i < 4; i++)
- for ( int j = 0; j < 4; j++)
- array[i, j] = (i + 1) * (j + 1);
- var intQuery = from i in array.Cast< int >()
- where i > 5
- select i;
- foreach ( int i in intQuery)
- Console.WriteLine(i);
- }
由于二維數(shù)組無(wú)法直接轉(zhuǎn)換為IEnumerable<T>類型,所以,通過(guò)其Cast<T>()方法先將其轉(zhuǎn)換為IEnumerable<T>再進(jìn)行查詢
Enumerable. Cast< TResult > () 泛型方法 將 IEnumerable 的元素轉(zhuǎn)換為指定的類型。
此方法通過(guò)使用延遲執(zhí)行實(shí)現(xiàn)。即時(shí)返回值為一個(gè)對(duì)象,該對(duì)象存儲(chǔ)執(zhí)行操作所需的所有信息。只有通過(guò)直接調(diào)用對(duì)象的 GetEnumerator 方法或使用 Visual C# 中的 foreach (或 Visual Basic 中的 For Each )來(lái)枚舉該對(duì)象時(shí),才執(zhí)行此方法表示的查詢。
Cast< TResult>() (IEnumerable) 方法通過(guò)提供必要的類型信息,可在非泛型集合上調(diào)用標(biāo)準(zhǔn)查詢運(yùn)算符。例如,ArrayList 并不實(shí)現(xiàn) IEnumerable< T> ( ) ,但通過(guò)調(diào)用 ArrayList 對(duì)象上的 Cast< TResult> ( ) (IEnumerable) ,就可以使用標(biāo)準(zhǔn)查詢運(yùn)算符查詢?cè)撔蛄小?/P>
如果元素?zé)o法強(qiáng)制轉(zhuǎn)換為 TResult 類型,則此方法將引發(fā)異常。若要只獲取可以強(qiáng)制轉(zhuǎn)換為 TResult 類型的元素,請(qǐng)使用 OfType< TResult> () 方法,而不是 Cast< TResult> ( ) (IEnumerable) 。
在查詢表達(dá)式中,顯式類型迭代變量會(huì)轉(zhuǎn)換為 Cast< TResult> ( ) (IEnumerable) 的一個(gè)調(diào)用。以上介紹Linq查詢二維數(shù)組。
【編輯推薦】