Чому немає реалізації LINQ для array [,]
тобто для одновимірних масивів є, для jagged масивів є, а для n-вимірних немає?
чому?
тобто для одновимірних масивів є, для jagged масивів є, а для n-вимірних немає?
чому?
мене збило з пантелику те, що для jagged і для звичайних масивів Intellisense пропонує багато extension methods, а для multidimension — ні. Після чого я помилково подумав, що і LINQ до тих масивів не можна писати. А насправді то причина то в тому, що перші реалізовують IEnumarable< T> (для яких визначені ті всі extension methods), а multidimension лише IEnumarable. LINQ же ж працює для всіх випадків.
Jagged-массивы:
int[][] a = new int[][]
{
new int[] {1, 2},
new int[] {3, 4},
new int[] {5, 6}
};
var s = (from int[] t in a
select t).ToList();А почему из обычного массива нельзя напрямую создать множество массивов n-1 размерности, так вы и без учета LINQ без своего кода этого не сделаете.
Кто сказал, что не можете?
int[,] a = new int[3,2]
{
{1, 2},
{3, 4},
{5, 6}
};
var s = (from int t in a
select t).ToList();
Что должен вернуть запрос к многомерному массиву?
Це — неважливо. Мені важливо знати саме причину, чому я не можу застосувати LINQ до обєкта, який вже реалізовує IEnumarable.
Насколько я понимаю, класс System.Array реализует только не-generic интерфейс System.Collections.IList, поскольку присутствовал в.Net с самого начала. Соответственно, информацию о типе нужно добавлять явно. Я не проводил экспериментов, но поскольку многомерные массивы в.Net это не массивы массивов, а всё равно один объект Array с Rank больше 1, то я бы ожидал, что LINQ-запрос выполним только над типом заданным как элемент массива.
array вже реалізовує IEnumarable, чому ми не можемо тоді написати LINQ-запит?
Я не большой специалист по дотНет, поэтому вопрос: Что должен вернуть запрос к многомерному массиву?
Але ще чомусь приводимо до IEnumarable< string>... і вже до нього пишемо запит.
-
Ну ти вже вибач шо я так грубо, але сам розумієш шо питання просто тупе в корені...А код визиває здивування, але здивування від того як можна цей код вважати «дивним»...
Нагуглив, що “rectangular array is non-enumerable and non-queryable collection”
дивно... такий код компілюється і виконується...
string[,] SomeStrings = new string[2,2];
foreach(string s in SomeStrings)
{
}
Ну многомерный массив можно же рассматривать как одномерный — обходя его как дерево типа nested set.
пиши листа розробникам.нету, чи ти думаєш шо вони тут тусуються?
можливо тому і немає
20 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів