Enumeracja rekordu jednego wiersza MySQLDataReader

0

Napisałem proste zapytanie do bazy SELECT * FROM main, postępując zgodnie z poradnikiem udało mi się wyświetlić wszystkie wyniki w następujący sposób:

MySqlDataReader reader = cmd.ExecuteReader();


            while (reader.Read())
            {
                StringBuilder sb = new StringBuilder();
                
            
                for (int i = 0; i < 15; i++)
                {
                    sb.Append(reader[i]);
                    sb.Append(" ");
                }

                System.Windows.MessageBox.Show(sb.ToString());
            }

Jednak chciałem zapisać cały wynik do listy tablic stringów zamiast wywoływania pętli for i MessageBoxa dodając następującą linijkę:

yield return (from o in reader.Cast<object>() select o.ToString()).ToArray();

Po zamianie wyniku tej metody na listę okazuje się, że jest ona wypełniona samymi polami "System.Data.Common.DataRecordInternal".
Czy mogę uzyskać pożądany rezultat bez odwołań w stylu reader[i]?

1

Nie sądzę. SqlDataReader to nie jest kolekcja w pamięci, żeby móc na niej operować przez LINQ. Ale zawsze możesz sobie napisać swoją własną extension method, która przyjmie SqlDataReadera i zrobi z niego tablicę stringów, tak jak chcesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1