首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LINQ:分组集合

LINQ:分组集合
EN

Stack Overflow用户
提问于 2009-05-03 09:52:18
回答 1查看 306关注 0票数 0

我正在编写空间入侵者的程序以供练习;-)并且工作得很好,但我的入侵者还击是有问题的。

所有入侵者都存储在一个列表中,我使用linq根据它们的X位置对这些入侵者进行分组,这样我就可以随机地访问一个组,并使用列底部的入侵者进行反击。

代码语言:javascript
运行
复制
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 { invaderGroup.Key,invadergroup };),我的结果总是

有人能给我一些帮助/暗示吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-05-03 10:23:40

我在查询中看到了两个问题;您正在对组进行排序,而不是对入侵者进行排序,并且您使用的是随机数为零的Take,这样它就可以返回一个空的结果。

它用于按X坐标对入侵者进行分组,按Y坐标对入侵者进行排序,随机选择一组入侵者,并获得具有最高Y坐标的入侵者:

代码语言:javascript
运行
复制
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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/816707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档