.net 6 新增的一些有趣的Linq

比如我有如下collections

string[] names = new[] {"tom0", "tom1", "tom2", "tom3", "tom4", "tom5", "tom6"};
int[] items = new[] {0,1,2,3,4,5,6};

我要取倒数第二个items的值(5),.net 6可以用^符号表示反转,区别如下:

items.Reverse().ElementAt(1).Dump(); // old style
items.ElementAt(^2).Dump(); // .net 6

我要取items第2到第5区间的sub collections,可以用 x..y 语法

items.Skip(2).Take(3).Dump(); // old style
items.Take(2..5).Dump(); // .net 6

把items和names结合起来,生成一个新的Tuple<int, string> collection

items.Zip(names).Dump(); // .net 6

-binghongcha76(一只大猫) 2022-6-27
.net 6 新增的一些有趣的Linq
Thanks for sharing.
does this method still honor the boudary -pingz2(Ping) 2022-6-29
我成天被人教育微软的东西烂,看来不止我一个在用啊。真高兴
-vega_lee(天津包子-就不改) 2022-6-29
微软的很多东西其实超好用,比如 .net core ---- 但微软长时期缺乏一个杀伐决断的技术灵魂人物,总是骑墙,既不全力开放也没能象苹果全力封闭,走了条中间不尴不尬的路线,扼杀了自己的太多机会。
-xmlhttprequest(build5381) 2022-6-29
微软的东西就是这样,一旦有点红红火火的苗头,就开始胡思乱想了……
-guestagain(guest again) 2022-6-29
这些东西别的语言早就有了,而且Zip就是抄Ruby的
$ irb
2.6.6 :001 > names = ["tom0", "tom1", "tom2", "tom3", "tom6"]
 => ["tom0", "tom1", "tom2", "tom3", "tom6"]
2.6.6 :002 > names[-2]
 => "tom3"
2.6.6 :003 > names[2..5]
 => ["tom2", "tom3", "tom6"]
2.6.6 :004 > items = [0,1,2,3,4,5,6]
 => [0, 1, 2, 3, 4, 5, 6]
2.6.6 :005 > items.zip(names)
 => [[0, "tom0"], [1, "tom1"], [2, "tom2"], [3, "tom3"], [4, "tom6"], [5, nil], [6, nil]]
2.6.6 :006 >

-gta_palace(呄 - 每天乃古) 2022-6-29
还真不太一样 --- 严格来说在 .net 里,因为 linq 是基于 extension method,所以 zip 这样的 method 你自己很多年前就可以拥有。
-xmlhttprequest(build5381) 2022-6-29
MS really should add extension .ForEach() to IEnumerable, I always have to create this extension method manually
-binghongcha76(一只大猫) 2022-6-30
这东西早就有了。你现在是在MS系统打转所以有这种说法。个人观点。net能挺很长时间,但最后可能结果跟VB一样
-gta_palace(呄 - 每天乃古) 2022-6-30
我在跳到了完全不用 MS 系统的公司后,才对 MS 的好用有了更深的认识。
-xmlhttprequest(build5381) 2022-6-30
现在还困在.net里,怎么搞移动端?
-googlebot(bot) 2022-6-30
哥业余写游戏的,必须用c#啊,不过话说回来,unity那点c#的难度,比起企业里的 .net应用,不知道简单了多少倍
-binghongcha76(一只大猫) 2022-7-1