Linq扩展方法
程序员文章站
2023-08-25 14:49:46
如果要扩展LINQ查询方法集,只需要为IEnumerable扩展方法。 第一种:扩展聚合方法,类似已有的Max、Min,可以给具体类型扩展,也可以给泛型扩展。 using System; using System.Collections; using System.Collections.Ge ......
如果要扩展linq查询方法集,只需要为ienumerable<t>扩展方法。
第一种:扩展聚合方法,类似已有的max、min,可以给具体类型扩展,也可以给泛型扩展。
using system; using system.collections; using system.collections.generic; using system.data; using system.io; using system.linq; namespace consoleapp4 { class program { static void main(string[] args) { var numbers1 = new double[]{ 1.9, 2, 8, 4, 5.7, 6, 7.2, 0 }; var query1 = numbers1.median(); console.writeline("double: median = " + query1); var numbers2 = new int[] { 4, 5, 6, 8, 0 }; var query2 = numbers2.median(); console.writeline($"int:median ={query2}"); var str1 = new string[] { "ab", "abc", "abcde", "abcedfs" }; ; var query3 = str1.median(x => x.length); console.writeline($"string:{query3}"); } } public static class linqextension { public static double median(this ienumerable<double> source) { if(source.count()==0) { throw new invalidoperationexception("无法计算中位数"); } var sortedlist = source.orderby(x => x); int itemindex = (int)sortedlist.count()/2; // 索引从0开始,itemindex总是偏大 if(sortedlist.count()%2==0) { return (sortedlist.elementat(itemindex) + sortedlist.elementat(itemindex - 1)) / 2; } else { return sortedlist.elementat(itemindex); } } //int类型重载求中位数 public static double median(this ienumerable<int> source) { return source.select(x => convert.todouble(x)).median(); } //泛型,需传入选择器 public static double median<t>(this ienumerable<t> source,func<t,double> selector) { return source.select(x => selector(x)).median(); } } }
第二中:扩展返回集合的方法,类似where、orderby
public static class linqextension { public static ienumerable<t> alternateelements<t>(this ienumerable<t> source) { list<t> list = new list<t>(); int i = 0; foreach (var item in source) { if (i % 4 == 2) { list.add(item); } } return list; } }
下一篇: 【oracle案例】RMAN-06556
推荐阅读
-
Win10 14393.479累积更新补丁KB3201845升级后DHCP服务无法正常使用的解决方法
-
C# 6.0 内插字符串(Interpolated Strings )的使用方法
-
只有mdf文件的数据库附加失败的修复方法分享(置疑、只读)
-
Win10周年更新14393升级失败卡在32%不动了的解决方法
-
win8系统自带截图工具使用方法(图文详解)
-
2011年最牛B的淘宝客网站推广方法大全
-
获取JPEGImageEncoder和JPEGCode这两个类的方法
-
通过SQL Server的位运算功能巧妙解决多选查询方法
-
sqlserver 数据库压缩与数据库日志(ldf)压缩方法分享
-
Win10笔记本风扇狂转怎么办?Win10笔记本风扇一直转的解决方法