2016-09-16 4 views
0

Я хочу получить базу данных и получить список массивов строк. Я делаю ..Entity Framework - Пользовательский запрос к многомерному массиву?

List<string[]> results = new List<string[]>(); 
results = dbContext.Database.SqlQuery<string[]>("select one, two from myTable").ToList(); 

У меня есть исключение

"The result type 'System.String[]' may not be abstract and must include a default constructor." 

Но я не хочу, чтобы создать новый абстрактный тип. Это просто простая карта. Две колонки.

Каков наилучший способ достичь этого?

ответ

0

Класс, который будет использоваться вместо TElement, должен иметь конструктор по умолчанию, чтобы метод SQLQuery смог инициализировать его, прежде чем добавлять его в ваш List.

Поэтому если вы имели класс с именем Person метод SQLQuery бы сделать

Person p = new Person(); 

внутри, а затем он будет заполнить его свойства

Person.One = .... ; 
Person.Two = .... ; 

Вместо класса, как выше вы хотите использовать массив строки типа. Проблема в том, что этот класс не имеет конструктора по умолчанию. Мы можем создать новый массив, как

string[] someStrings = new string[10]; 

, но мы не можем создать массив строк следующим образом

string[] someStrings = new string[]; 

потому, что нам нужно определить, насколько велик этот массив будет.

Я боюсь, что вы не сможете достичь того, что вы пытаетесь сделать, вам нужно будет использовать класс со стандартным конструктором вместо string[].

+0

Если myTable отображает уже определенную Entity («MyEntity»), он может вернуть массив через: results = dbContext.Set (). Выбрать (e => новая строка [] {e.one, e. два}) ToArray(). –

Смежные вопросы