2016-09-16 19 views
0

データベースを取得して文字列配列のリストを取得します。私は例外Entity Framework - 多次元配列へのカスタムクエリ?

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

を持っている。しかし、私は新しい抽象型を作成したくない...

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

を行います。それは単純なマップです。 2つの列。

これを達成する最も良い方法は何ですか?

答えて

0

TElementの代わりに使用されるクラスには、に追加する前にSQLQueryメソッドを初期化できるように、デフォルトコンストラクタが必要です。あなたはPersonというクラスがあった場合

したがってSQLQuery方法は、内部

Person p = new Person(); 

を行うだろうし、使用する上記のように、それは代わりに、クラスの

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

そのプロパティを埋めるだろう型文字列の配列問題は、このクラスにデフォルトコンストラクタがないことです。私たちは、

string[] someStrings = new string[10]; 

として新しい配列を作成することができますが、我々は、この配列があることを行っているどのように大きなを指定する必要があるため

string[] someStrings = new string[]; 

を次のように我々は、文字列の配列を作成することはできません。

あなたがしようとしていることを達成できないのではないかと心配していますが、string[]の代わりにデフォルトのコンストラクタを持つクラスを使用する必要があります。

+0

myTableが既に定義されたエンティティ( "MyEntity")にマップする場合、 results = dbContext.Set ().Select(e => new string [] {e.one、e。 2})。ToArray(); –