曹某某:用 LINQ 编写 C# 技巧实战解析

向作者提问
来自南京的.NET码农,微软MVP,CSDN版主。将近10年里干过架构师,也当过产品经理,csdn中的caozhy,人称老曹。程序员中英语不错,业余还玩玩天文,猫奴一枚。
查看本场Chat

2018年1月3日,周三晚上8点30分,CSDN版主,将近10年里干过架构师,也当过产品经理,来自南京的.NET码农,微软MVP的曹某某带来了主题为《用 LINQ 编写 C# 都有哪些一招必杀的技巧?》的交流。以下是主持人Leo整理的问答实录,记录了作者和读者问答的精彩时刻!


内容提要:

  • 文章中提到的排列组合的算法,代码不是很懂,能不能深入讲解下?
  • LINQ是否支持集合运算,比如求差集,求并集,求交集,分别怎么写?
  • 什么是Rx,它和LINQ有什么关系,在编程中有什么运用的场景?
  • LINQ和ORM对比的特点如何?
  • EF中的导航属性中,分别有人用ienumerable、ilist 、icollection3种类型,都有什么区别?
  • 用C++写过一个统计英文文章中都出现了哪些单词的程序,并且按照字母排序,看了LINQ,想问问LINQ里面怎么实现?

问:文章中提到的排列组合的算法,代码不是很懂,能不能深入讲解下?

答:首先是排列的代码:

enter image description here

上面是输入,下面是输出,主要的代码其实就是中间那3行。我贴图出来了。

第一行首先构造了一个种子数据,它是一个由整数集合构成的集合。整数集合代表最终结果的一条,也就是一个排列。集合的集合,也就是result,是代表所有的排列。执行完第一行,结果是{{1},{2},{3},{4}}也就是每个集合的项目只有一个整数。

微信扫描登录