C# LINQ:分组集合
我正在为《太空入侵者》编程练习;-)虽然效果很好,但我对入侵者还击有意见 所有入侵者都存储在一个列表中,我使用linq将这些入侵者按其X位置分组,这样我就可以随机访问一个组,并将该列底部的入侵者击退C# LINQ:分组集合,c#,linq,C#,Linq,我正在为《太空入侵者》编程练习;-)虽然效果很好,但我对入侵者还击有意见 所有入侵者都存储在一个列表中,我使用linq将这些入侵者按其X位置分组,这样我就可以随机访问一个组,并将该列底部的入侵者击退 var r = from invader in invaders group invader by invader.Location.X into invaderGroup orderby invaderGroup descending
var r = from invader in invaders
group invader by invader.Location.X into invaderGroup
orderby invaderGroup descending
select invaderGroup.Take(random.Next(0, invaderGroup.Count()));
但是无论我尝试什么(例如,选择new{investargroup.Key,investrgroup};),我的结果总是null
有人能给我一些帮助/提示吗?谢谢我发现您的查询有两个问题;您正在对组进行排序,而不是对入侵者进行排序,并且您正在使用带有一个可以为零的随机数的
Take
,以便返回一个空结果
这适用于按X坐标对入侵者进行分组,按Y坐标对入侵者进行排序,随机选取一组入侵者,并获得Y坐标最高的入侵者:
var r =
from invader in invaders
orderby invader.Location.Y descending
group invader by invader.Location.X into invaderGroup
select invaderGroup;
Invader fire = r.Skip(random.Next(r.Count())).First().First();