私の脳が機能していない、私はこのグリッド上の最初の3つの行をつかむしようとしています。私はいくつかの新しいものを学ぶために簡単なチェッカーゲームを作っています。私のコードは最初の3つの列をつかんで赤いチェスの配置を初期化しています。私は最初の3行を代わりにしたい。ギザギザの配列の最初の3つの要素を取得する
これは私のコードが今やっていることです。
これは私の(簡体字)のコードです。 Square
は、いくつかの小さなアイテムを保持しているだけの鉱山のクラスです。その後、enumerablesとしてあなたが行(または列)を取得したい場合は
m_board.Select(c => c.Take(3))
:
private Square[][] m_board = new Square[8][];
for (int i = 0; i < m_board.Length; i++)
m_board[i] = new Square[8];
//find which pieces should hold red pieces, the problem line
IEnumerable<Square> seqRedSquares =
m_board.Take(3).SelectMany(x => x).Where(x => x != null);
//second attempt with the same result
//IEnumerable<Square> seqRedSquares =
m_board[0].Union(m_board[1]).Union(m_board[2]).Where(x => x != null);
//display the pieces, all works fine
foreach (Square redSquare in seqRedSquares)
{
Piece piece = new Piece(redSquare.Location, Piece.Color.Red);
m_listPieces.Add(piece);
redSquare.Update(piece);
}
タイトルに「C#LINQ」というプレフィックスを付けないでください。それはすでにタグに入っています。 –
@ John Saunders、私はどちらの方法でも強い意見はありませんが、質問タイトルのリストを書き留めていれば精神的に分かりやすくなりますか? –
[so]にいる人は、タグを使って質問のリストをフィルタリングするのに慣れているので、そうではありません。それはちょうど質問タイトルを醜く読めないようにする。 "C#LINQは、ギザギザの配列の最初の3つの要素を得る"対 "ギザギザの配列の最初の3つの要素を取得する"という、自分自身に読んでください。どちらが理にかなって、その質問についてあなたに何かを教えてくれるのですか。 –