このことを理解するには助けが必要です。次のコードで、変数 "ejes" と "habilidades" が "dynamic" として解決され、3 番目の変数がIEnumerable<dynamic>
. これは次に実行するコードに影響を与えています。「ejes」と「habilidades」は IEnumerable ではないため、拡張メソッド「Count()」を呼び出そうとすると例外が発生します。これらは、同じメソッド「Database.Query」の結果です。
スニペットは次のとおりです。
var db = Database.Open("froned");
db.Execute("begin transaction");
try
{
var asignacion = db.QuerySingle("select * from asignacion_avanza where id_asignacion = @0", id_asignacion);
var ejes = db.Query(String.Format(@"
select id_eje
from asignatura_eje_nivel
where id_nivel = {0}
and id_asignatura = {1}",
asignacion.id_nivel,
asignacion.id_asignatura));
var habilidades = db.Query(String.Format(@"
select id_habilidad
from asignatura_habilidad_nivel
where id_nivel = {0}
and id_asignatura = {1}",
asignacion.id_nivel,
asignacion.id_asignatura));
var dificultades = db.Query("select id_dificultad from dificultad");
var c_dif = dificultades.Count();
var c_eje = ejes.Count();
var c_habilidades = habilidades.Count();
デバッガーの画像を配置して、変数の実行時の型を示します。