Ошибка Невозможно применить индексирование через [] к выражению типа "object""
Вот код с ошибкой.
var List = db.Query<dynamic>("SELECT Name, Type, Parent FROM TreeView Where Level = 1");
foreach (dynamic el in List)
{
MessageBox.Show(el[0].ToString()); //Выдает ошибку: Невозможно применить индексирование через [] к выражению типа "object""
MessageBox.Show(el[1].ToString());
MessageBox.Show(el[2].ToString());
}
Как привести el к массиву?
Если обращаюсь вот так - "MessageBox.Show(el.Name.ToString());", то все нормально.
Использую Dapper(ORM).
Ответы (2 шт):
Автор решения: Iron Man
→ Ссылка
Решение написал @Kir_Antipov:
var list = db.Query<dynamic>(...).Select(x => new object[] { x.Name, x.Type, x.Parent });
Автор решения: A K
→ Ссылка
Обычно когда используют Dapper то создают отдельный класс, а не гоняют в dynamic:
public class Tree
{
public string Name { get; set; }
public string Type { get; set; }
public string Parent{ get; set; }
}
И не надо обращаться по индексу:
var List = db.Query<Tree>("SELECT Name, Type, Parent FROM TreeView Where Level = 1");
foreach (var element in List)
{
MessageBox.Show(element.Name);
MessageBox.Show(element.Type);
MessageBox.Show(element.Parent);
}