c# LINQ

可以对所有实现了IEnumerable<T>接口的对象执行标准的LINQ查询

<3>泛型约束

        很多时候我们不希望使用者太过自由

        我们希望他们在使用我们设计的泛型类型时

        不要很随意的传入任何类型

        对于泛型类型的设计者来说,要求使用者传入指定的类型是很有必要的

        因为我们只有知道他传入了什么东西,才方便对这个东西做操作

        让我们来给上面设计的泛型类型加一个泛型约束

        代码如下:        

          public static class SomethingFactory<T> where T:MyObj

        这样在使用SomethingFactory的时候就只能传入MyObj类型或MyObj的派生类型啦

        注意:

          还可以写成这样

          where T:MyObj,new()

          来约束传入的类型必须有一个构造函数。        

    (3)泛型的好处

      <1>算法的重用

        想想看:list类型的排序算法,对所有类型的list集合都是有用的

      <2>类型安全

      <3>提升性能

        没有类型转化了,一方面保证类型安全,另一方面保证性能提升

      <4>可读性更好

        这一点就不解释了 

   
            //linq语句必须是以from开头,以select 或者 group结尾巴  
            var query = from r in lists where r.age >= 20 && r.age <= 30 select r;   
   
            foreach( Person per in query )   
            {   
                Console.WriteLine( per.name +  "  " + per.age ) ;   
            }   
 

      var results = from w in words

      where w.Contains(“z”)

      select w;

LINQ 和 Lambda 等价

  int[] scores = { 10, 90, 100, 30, 70, 29, 45 };
            var result = from i in scores//LINQ表达式
                where i>10
                select i;
            foreach (var e in result)
            {
                Debug.WriteLine(e);
            }
            var result1 = scores.Select(e => e).Where(o=>o>10);//Lambda表达式
            Debug.WriteLine("==================================================================");
            foreach (var e in result1)
            {
                Debug.WriteLine(e);
            }

 
 
原文地址:https://www.cnblogs.com/dzh1990/p/7551798.html