任何人都可以告诉我,这是否可以在Linq做?

时间:2010-04-07 22:01:56

标签: c# linq

所以我一直在努力工作几个小时。我正在创建一个BubbleBreaker类型的游戏。我可以使用for循环或while,但我也尝试使用Linq练习。这是我在pesudo代码中尝试做的事情。

每个气泡都有一个列和行属性。如果气泡从其Column属性中减去一个并找到相同的Color气泡,它应该选择它然后减去-1并查看两个气泡是否也有相同的颜色气泡。如果有则减去-2,依此类推。所以我想做的是

var test= _theBubbles.TakeWhile((i, s) => i.BubbleColor== bubble.BubbleColor)//Then somehow tell it to do bubble.Column-s

然后从bubble.Column中减去s所以想法是继续向下看列,直到气泡不同

1 个答案:

答案 0 :(得分:1)

我们假设_theBubbles是游戏板上所有气泡的列表。在这种情况下,给出特定的起始气泡,您可以使用以下查询来查找给定的相同颜色下面的所有气泡(我假设最底部的行是行0):

var bubble = ... // some known bubble
var sameColorBubblesBelowTheBubble =
     _theBubbles.Where( b => b.Column == bubble.Column &&
                        b.Row < bubble.Row )
                .OrderByDescending( b => b.Row )
                .TakeWhile( (b,i) =>  b.BubbleColor == bubble.BubbleColor );