• Linq操作非泛型集合


    我们都知道,Linq能查询泛型集合,确切的说是:LINQ能实现查询泛型对象或者实现了IEnumerable。但是,很遗憾的是诸如ArrayList这样的非泛型集合并没有实现IEnumerable。那咋办呢?总不能把这么绚丽的Linq技术对非泛型关上大门把!~其实,方法还是有的。

    场景还原:

    定义一个car的类:

    class Car
      {
        public int CurrentSpeed;
        public int MaxSpeed;
        public string PetName;
      }

    对ArrayList 装载一些数据:

    ArrayList cars = new ArrayList();
          cars.Add(new Car { CurrentSpeed = 21, MaxSpeed = 2, PetName = "aa" });
          cars.Add(new Car { CurrentSpeed = 212, MaxSpeed = 22, PetName = "aa1" });

    如果强制使用Linq操作,会报错:

    解决方法如下:

    方法一。用Cast<T> 关键字

    var myAllCars = cars.Cast<Car>();
          var result = from c in myAllCars
                       where c.MaxSpeed > 10
                       select c;

    方法二。使用OfType<T>

    var myAllCars = cars.OfType<Car>();
          var result = from c in myAllCars
                       where c.MaxSpeed > 10
                       select c;

     OfType 除了上面转换非泛型之外,还有一个功能是刷选数据的功能。

    这个很简单

  • 相关阅读:
    2008年假期
    Asp.Net viewstate , session , cookie區別
    C#类型 参考表(MSDN)
    GIS ftp
    gis 好书推荐
    c#应该怎么改进?
    ArcEngine开发体验(附许可)
    gis开源开发资料(持续更新)
    GIS API乱弹
    Autodesk Map3d的应用和开发
  • 原文地址:https://www.cnblogs.com/damonlan/p/3214610.html
Copyright © 2020-2023  润新知