时间:2021年04月27日 | 作者 : aaronyang | 分类 : .NET CORE | 浏览: 612次 | 评论 0 人
LINQ提供程序,LINQ to Objects, LINQ to Entities, LINQ to XML,LINQ to OData, LINQ to Amazon等
由于本人以前学过了linq,文章系列链接 文章图片已修复
所以本文只列出一些,以前我没写到的LINQ知识
Enumerable类定义了45个以上的扩展方法
扩展方法 |
First,FirstOrDefault,Last,LastOrDefault |
Where |
Single SingleOrDefault |
ElementAt ElementAtOrDefault |
Select SelectMany |
OrderBy OrderByDescending ThenBy ThenByDescending |
Reverse |
GroupBy GroupByJoin Join |
Skip SkipWhile |
Take TakeWhile |
Aggregate Average Count LongCount Max Min Sum |
All Any Contains |
Cast |
OfType |
Except Intersect Union |
Append Concat Prepend |
Zip 根据项的位置执行匹配操作 |
Distinct |
To Array ToList ToDictionary ToLookup |
Zip前面我没写过,类似Aggregate,把两个给你,你自己怎么决定怎么汇总。
List<String> list1 = new List<String> { "Hello", "Good", "My " }; List<String> list2 = new List<String> {"C#", "Day", "Baby" }; var _list1list2= list1.Zip(list2); foreach (var name in _list1list2) { Console.WriteLine(name); } foreach (var name in list1.Zip(list2, (l1, l2) => l1 + " " + l2)) { Console.WriteLine(name); }
Zip提供回调,他会把对应index的两个对象传给你,让你处理,然后返回一个新的
其他LINQ看我以前的博客 文章系列链接
www.ayjs.net===
继续使用Northwind示例
这块和LINQ to SQL很像
传给你个db对象,里面有表集合,然后利用linq操作集合。
比如Where查找 比如 排序
具体看上一篇博客
对DbSet<T>的操作
点Select拓展方法 返回新的 匿名对象
XX.Select(p=>new { AAA=p.AA,BBB=p.BB });
打开上一篇博客的代码,添加下面代码
static void GroupJoinCategoryAndProduct() { using (var db = new NorthWind()) { var logfactory = db.GetService<ILoggerFactory>(); logfactory.AddProvider(new ConsoleLoggerProvider()); var querygroup = db.Categories.AsEnumerable().GroupJoin(db.Products, (c) => c.CategoryID, p => p.CategoryID, (c, matchingProduct) => new { c.CategoryName, Products = matchingProduct.OrderBy(p => p.ProductName) }) ; foreach (var item in querygroup) { Console.WriteLine(item.CategoryName+" "+item.Products.Count()); foreach (var s in item.Products) { Console.WriteLine("\t"+s.ProductName); } } } }
Main方法执行下:
更多的下一篇博客介绍,这里简单介绍下
普通linq的代码
var watch = Stopwatch.StartNew(); Console.Write("按回车键开始"); Console.ReadLine(); watch.Start(); IEnumerable<int> numbers = Enumerable.Range(1,200_000_000); var squares = numbers.Select(n=>n*n).ToArray(); watch.Stop(); Console.WriteLine("{0:#,##0} 毫秒",watch.ElapsedMilliseconds);
打开CPU监视器
Win10 打开任务管理器,单击 性能,然后右击cpu,切换到 逻辑处理器
对于macOS
启动 Activity Monitor
导航到 View | Update Frequency | Very often(1 sec)
要查看CPU图形 请导航到 Window | CPU History
运行代码,下面的在win10演示
增加AsParallel方法调用
var squares=numbers.AsParallel().Select(n => n * n).ToArray();
发现好几个波形都一样了
创建自己的LINQ拓展方法:
public static class MyLinqExtension { public static IEnumerable<T> ProcessSequence<T>(this IEnumerable<T> sequence) { return sequence; } }
对this IEnumerable<T>的拓展就行了
还有创建个处理类, 比如
public class A { public A Hand1(string para) { //...其他操作 return this; } }
这样也可以实现链式 拓展
总结: 通过此书,目前发现 以前的LINQ在.NET CORE中都可以使用,当然还有些新增的 异步的LINQ
LINQ to Xml知识跟以前一样
LINQ还有些表达式 Expression的知识,感兴趣自己学
===============www.ayjs.net==========
抖音:wpfui 工作wpf,目前主maui
招聘合肥一枚WPF工程师,跟我一个开发组,10-15K,欢迎打扰
目前在合肥市企迈科技就职
AYUI8全源码 Github地址:前往获取
杨洋(AaronYang简称AY,安徽六安人)和AY交流
高中学历,2010年开始web开发,2015年1月17日开始学习WPF
声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费
不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo
查看捐赠AYUI7.X MVC教程 更新如下:
第一课 第二课 程序加密教程
额 本文暂时没人评论 来添加一个吧
发表评论