c# LINQ

本文深入探讨了C#中的泛型使用,包括泛型约束的重要性及其如何提升代码的重用性和性能。同时,详细解析了LINQ查询的语法与Lambda表达式的等价性,通过实例展示了如何使用LINQ进行数据筛选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以对所有实现了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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值