当前位置: 首页 > 工具软件 > OpenRA > 使用案例 >

C#开发的OpenRA游戏使用SelectMany语句查询

琴光亮
2023-12-01

C#开发的OpenRA游戏使用SelectMany语句查询

OpenRA游戏里,使用很多LINQ的语句,

            var orders = self.TraitsImplementing<IIssueOrder>()
                .SelectMany(trait => trait.Orders.Select(x => new { Trait = trait, Order = x }))
                .Select(x => x)
                .OrderByDescending(x => x.Order.OrderPriority);

                
                
所以代码看起来非常简单,但是实际上要理解起来,就比较费劲了,
毕竟比多重for循环理解起来,就没有这么直观了。
因此要搞懂OpenRA的代码,就必先搞懂LINQ的语句,而LINQ语句里最难搞懂的就是SelectMany语句。
因为它是简化多重循环的遍历,就没有单个循环那么明白,需要大脑不断地脑补二重循环的方式,
才能明白代码的意思。当然,当你比较熟悉LINQ之后,也许会直觉就能感觉出来它的意思了。

由此可见,C#语言看起来比较简单,但是实际上学习的内容是比较多的,相比其它语言来说是多了很大一截。

先来看一下SelectMany语句在微软文档里的定义:

1、
SelectMany<TSource,TCollection,TResult>(IEnumerable<TSo

 类似资料: