C#-linq实战003-查询-Where

Where语句检查符合条件的元素,并返回新的迭代器

1:基于谓词筛选值序列

IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)

1.1:foreach解析:

            //IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
            //foreach解析:
            //source:TSource->string
            List<string> fruits15 = new List<string> { "apple", "passionfruit", "banana", "mango",
                    "orange", "blueberry", "grape", "strawberry" };
            //predicate:TSource->item
            Console.WriteLine("基于谓词筛选值序列foreach解析:");
            foreach (string item in fruits15)
            {
                if (item.StartsWith("a"))//predicate:bool->item.StartsWith("a")
                {
                    Console.Write(item + ",");
                }
            }

1.2:原理图:执行方式:延迟流式执行

 1.3:linq写法(查询语句):

            //2:linq写法(查询语句):
            var fruits16 = from f in fruits15.AsEnumerable()
                           where f.StartsWith("a")
                           select f;
            Console.WriteLine("基于谓词筛选值序列linq写法:");
            foreach (string item in fruits16)
            {
                Console.WriteLine(item);

            }

1.4:查询方法写法:

            //3:查询方法写法:
            var fruits17 = fruits15.AsEnumerable().Where(f=> f.StartsWith("a"));
            Console.WriteLine("基于谓词筛选值序列查询方法写法:");
            foreach (string item in fruits17)
            {
                Console.WriteLine(item);

            }

2:基于谓词筛选值序列。 将在谓词函数的逻辑中使用每个元素的索引。

IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate)

2.1:foreach解析:

            //IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate)
            //foreach解析:
            //source:TSource->string
            List<string> fruits25 = new List<string> { "apple", "passionfruit", "banana", "mango",
                    "orange", "blueberry", "grape", "strawberry" };
            int index = 0;
            //predicate:TSource->item
            //predicate:int->inde
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值