Я работаю с многомерными массивами bool
, int
и различными struct
. Код проходит через эти массивы и выполняет некоторую операцию с определенными значениями. Например,Использование LINQ для извлечения конкретных значений из многомерного массива
for (int x = 0; x < this.Size.Width; x++) {
for (int y = 0; y < this.Size.Height; y++) {
if (this.Map[x, y]) {
DrawTerrain(this.Tile[x, y].Location, Terrain.Water);
}
}
}
Я могу сделать простой материал LINQ, но я не могу делать то, что хотел. Я бы хотел использовать LINQ. Может быть что-то вроде
from x in this.Map where x == true execute DrawTerrain(...)
Но я не понимаю, как я могу получить й и у места или как вызвать метод в операторе LINQ.
Также было бы здорово, если бы я мог поместить этот код в функцию и иметь возможность называть его делегатом или предикатом? Я не знаю, правильные ли слова делегат или предикат.
void Draw(Delegate draw, bool[,] map, struct[,] tiles)
from x in map where x == true draw(titles[x,y]).invoke;
}
Мой отец говорит, что мне нужно попробовать свой путь, но я получаю ошибку компиляции: «получить новый CoordinateValue {Value = arr [i, j]; X = i; Y = j;}; которые говорят: «В качестве оператора можно использовать только назначение, вызов, приращение, декремент и новые выражения объекта». Кроме того, где я помещаю AsEnumerable, в CoordinateValue? –
Я ПОЛУЧИЛ ЭТО! Огромное спасибо. Должно быть, вместо; в отчете о доходности. Кроме того, AsEnumerable должен быть AsEnumerable. –
OMG. Я смог использовать Action>, и он работает. Я не знаю, что я сделал, но у меня все получилось. –