ホームページ >データベース >mysql チュートリアル >Entity Frameworkを使用してSQLクエリから匿名型の結果を抽出する方法
Entity Framework での SQL クエリからの匿名型結果の抽出
Entity Framework では、SqlQuery
この制限を克服して匿名型の結果を取得するには、生の SQL を直接活用することが解決策となります。提供されているメソッド DynamicListFromSql を使用すると、開発者はこの機能を実現できます。
public static IEnumerable<dynamic> DynamicListFromSql(this DbContext db, string Sql, Dictionary<string, object> Params) { using (var cmd = db.Database.Connection.CreateCommand()) { cmd.CommandText = Sql; if (cmd.Connection.State != ConnectionState.Open) { cmd.Connection.Open(); } foreach (KeyValuePair<string, object> p in Params) { DbParameter dbParameter = cmd.CreateParameter(); dbParameter.ParameterName = p.Key; dbParameter.Value = p.Value; cmd.Parameters.Add(dbParameter); } using (var dataReader = cmd.ExecuteReader()) { while (dataReader.Read()) { var row = new ExpandoObject() as IDictionary<string, object>; for (var fieldCount = 0; fieldCount < dataReader.FieldCount; fieldCount++) { row.Add(dataReader.GetName(fieldCount), dataReader[fieldCount]); } yield return row; } } } }
このメソッドを使用すると、開発者は SQL クエリを実行し、動的オブジェクトの形式で結果を取得できます。動的オブジェクトは、キーと値のペアとして保存されます。 ExpandoObject インスタンス。
このメソッドを独自のコードで使用するには、単に次のように呼び出します。
List<dynamic> results = DynamicListFromSql(myDb,"select * from table where a=@a and b=@b", new Dictionary<string, object> { { "a", true }, { "b", false } }).ToList();
このアプローチを利用すると、開発者は SQL クエリから匿名型の結果を簡単に取得でき、クエリ結果に基づいて特定の列の取得やカスタム データ構造の作成が容易になります。
以上がEntity Frameworkを使用してSQLクエリから匿名型の結果を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。