從實體框架中的SQL 查詢取得匿名結果
在實體框架中,SqlQuery
使用原始 SQL
要擷取匿名結果,您可以使用原始 SQL 和動態類型。這是實現此目的的方法:
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; } } } }
用法:
要使用此方法,您可以如下呼叫它:
List<dynamic> results = DynamicListFromSql(myDb, "select * from table where a=@a and b=@b", new Dictionary<string, object> { { "a", true }, { "b", false } }).ToList();
這將傳回包含SQL 查詢結果的匿名物件清單。每個物件都將具有與結果集中的列相對應的屬性。
以上是如何使用實體框架從 SQL 查詢中取得匿名結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!