Pracuję z wielowymiadowymi tablicami o nazwach bool
, int
i różnych struct
. Kod przechodzi przez te tablice i wykonuje pewne operacje na określonych wartościach. Na przykład:Używanie LINQ do wyodrębniania określonych wartości z tablicy wielowymiarowej
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);
}
}
}
Potrafię zrobić proste rzeczy LINQ, ale nie mogę zrobić tego, co bym chciał. Chciałbym użyć LINQ. Może coś
from x in this.Map where x == true execute DrawTerrain(...)
Ale ja nie rozumiem, jak można uzyskać xiy lokalizacje lub jak wywołać metodę w rachunku LINQ.
Byłoby wspaniale, gdybym umieścił ten kod w funkcji i mógłbym wywołać go z delegatem lub predykatem? Nie wiem, czy delegat lub predykat są poprawnymi słowami.
void Draw(Delegate draw, bool[,] map, struct[,] tiles)
from x in map where x == true draw(titles[x,y]).invoke;
}
Mój ojciec mówi, że muszę spróbować, ale dostaję błąd kompilacji na "yield new CoordinateValue {Wartość = arr [i, j]; X = i; Y = j;};" które mówią: "Tylko przypisania, wywoływanie, inkrementowanie, dekrementacja i nowe wyrażenia obiektowe mogą być używane jako wyrażenie". Ponadto, gdzie mogę umieścić AsEnumerable, w CoordinateValue? –
I GOT IT! Dziękuję bardzo. Zamiast tego powinno być; w rachunku zysków i strat. Ponadto AsEnumerable powinno być równe. –
OMG. Byłem w stanie użyć działania> i to działa. Nie wiem, co zrobiłem, ale udało mi się. –