前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#迭代器与LINQ查询操作符

C#迭代器与LINQ查询操作符

作者头像
祝你万事顺利
发布2019-07-12 16:46:26
1K0
发布2019-07-12 16:46:26
举报
文章被收录于专栏:Unity游戏开发Unity游戏开发

(1)使用 针对集合类型编写foreach代码块,都是在使用迭代器 集合类型实现了IEnumerable接口 都有一个GetEnumerator方法 (2)迭代器优点 假如要遍历一个庞大的集合,只要其中一个元素满足条件,据完成了任务。 (3)yield关键字 MSDN中: 在迭代器块中用于向枚举数对象提供值或发出迭代结束信号。 (4)注意事项: 1.在foreach循环式多考虑线程安全性,在foreach时不要试图对便利的集合进行remove和add操作,任何集合,即使被标记为线程安全,在foreach时,增加项和移除项都会导致异常。 2.IEnumerable接口是LINQ特性的核心接口 只有实现了IEnumerable接口的集合,才能执行相关的LINQ操作,比如select,where等

LINQ 1.查询操作符 (1)源起 .net的设计者在类库中定义了一系列拓展的方法,方便用户操作集合对象。 (2)使用 一些系列拓展方法,eg:Where,Max,Select,Sum,Any,Average,All,Concat等都是针对IEnumerable的对象进行拓展,

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _1.LINQLearn
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> ltemp = new List<int> { 1, 23, 4, 5, 6 };
            var res = ltemp
                .Where(a => { return a > 4; })
                .Sum();
            Console.WriteLine(res);
            Console.ReadKey();
        }
    }
}

<1>上面的代码中用了两个拓展方法。 Where拓展方法,需要传入一个Func<int,bool>类型的泛型委托,此泛型委托,需要一个int的输入参数和一个bool类型的返回值。 <2>Sum拓展方法计算了Where拓展方法返回的集合的和 (3)好处 上面的代码中 ltemp .Where(a => { return a > 4; }) .Sum(); 上面的一句可以完全写成 (from v in arr where v > 3 select v).Sum(); (4)标准查询操作符说明 <1>过滤 Where 用法:arr.Where(a=>{ return a>3; }) 说明:找到集合中满足指定条件的元素 OfType 用法:arr.OfType<int>() 说明:根据类型,筛选集合中的元素 <2>投影 Select 用法:arr.Select<int,string>(a=>a.ToString()); 说明:将集合中的每个元素投影到进的集合中。上例子中新集合是一个IEnumerable<String>的集合 SelectMany 用法arr.SelectMany<int,string>(a=>{return new List<string>(){a.Tostring();}};

查询表达式 (1)源起 查询早做副表示扩张方法来操作及和,虽然已经比较方便,但可读性和代码的语义来考虑,仍有不足,于是产生了查询表达式的写法。虽然很像SQL,但是用本质不同 (2)用法 from v in arr where v>3 select v (3)说明: ... ... 参考文档: https://blog.csdn.net/snakorse/article/details/44171295

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档