zoukankan      html  css  js  c++  java
  • Linq查询二维数组

    在向大家详细介绍Linq查询二维数组之前,首先让大家了解下二维数组无法直接转换为IEnumerable<T>类型,然后全面介绍Linq查询二维数组。

    Linq查询二维数组

    以下代码为在一个4*4的二维int数组中将大于5的元素查出:

    1. static   void  Main( string [] args)  
    2. {  
    3. int [,] array =  new   int [4, 4];  
    4. for  ( int  i = 0; i < 4; i++)  
    5. for  ( int  j = 0; j < 4; j++)  
    6. array[i, j] = (i + 1) * (j + 1);  
    7.  
    8. var intQuery = from i  in  array.Cast< int >()  
    9. where i > 5  
    10. select i;  
    11.  
    12. foreach  ( int  i  in  intQuery)  
    13. Console.WriteLine(i);  
    14. }  

    由于二维数组无法直接转换为IEnumerable<T>类型,所以,通过其Cast<T>()方法先将其转换为IEnumerable<T>再进行查询
    Enumerable. Cast< TResult > () 泛型方法 将 IEnumerable 的元素转换为指定的类型。

    此方法通过使用延迟执行实现。即时返回值为一个对象,该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach (或 Visual Basic 中的 For Each )来枚举该对象时,才执行此方法表示的查询。

    Cast< TResult>() (IEnumerable) 方法通过提供必要的类型信息,可在非泛型集合上调用标准查询运算符。例如,ArrayList 并不实现 IEnumerable< T> ( ) ,但通过调用 ArrayList 对象上的 Cast< TResult> ( ) (IEnumerable) ,就可以使用标准查询运算符查询该序列。

    如果元素无法强制转换为 TResult 类型,则此方法将引发异常。若要只获取可以强制转换为 TResult 类型的元素,请使用 OfType< TResult> () 方法,而不是 Cast< TResult> ( ) (IEnumerable) 。

    在查询表达式中,显式类型迭代变量会转换为 Cast< TResult> ( ) (IEnumerable) 的一个调用。以上介绍Linq查询二维数组。

  • 相关阅读:
    记第一场省选
    POJ 2083 Fractal 分形
    CodeForces 605A Sorting Railway Cars 思维
    FZU 1896 神奇的魔法数 dp
    FZU 1893 内存管理 模拟
    FZU 1894 志愿者选拔 单调队列
    FZU 1920 Left Mouse Button 简单搜索
    FZU 2086 餐厅点餐
    poj 2299 Ultra-QuickSort 逆序对模版题
    COMP9313 week4a MapReduce
  • 原文地址:https://www.cnblogs.com/zxhoo/p/1885804.html
Copyright © 2011-2022 走看看