Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 泛型方法从数据库返回列表_C#_Sql_Linq_Object - Fatal编程技术网

C# 泛型方法从数据库返回列表

C# 泛型方法从数据库返回列表,c#,sql,linq,object,C#,Sql,Linq,Object,假设我有一个模型: public class Person { public int ID {get;set;} public string Name {get;set;} } 并且在数据库中有一个表: person(integer ID, char Name) 当编译器时间模型中的人物未知时,如何从数据库返回IEnumerable或List。例如,我认为select方法必须具有以下结构: public List<object> Select(string query, Dict

假设我有一个模型:

public class Person
{
public int ID {get;set;}
public string Name {get;set;}
}
并且在数据库中有一个表:

person(integer ID, char Name)
当编译器时间模型中的人物未知时,如何从数据库返回IEnumerable或List。例如,我认为select方法必须具有以下结构:

public List<object> Select(string query, Dictionary<string, object> parameters)
        {
            List<object> listValue = new List<object>();
            using (var command = new MySqlCommand(query, connection))
            {
                #region fill command.Parameters.AddWithValue
                if (parameters != null)
                {
                    foreach (var param in parameters)
                    {
                        if (param.Value == null)
                        {
                            command.Parameters.AddWithValue("@" + param.Key, DBNull.Value);
                            continue;
                        }
                        DateTime _date = new DateTime();
                        if (DateTime.TryParse(param.Value.ToString(), out _date))
                        {
                            command.Parameters.AddWithValue("@" + param.Key, _date.ToString("yyyy-MM-dd"));
                            continue;
                        }
                        command.Parameters.AddWithValue("@" + param.Key, param.Value);
                    }
                }
                #endregion

                if (connection.State == System.Data.ConnectionState.Closed) connection.Open();
                try
                {
                    using (MySqlDataReader reader = command.ExecuteReader(System.Data.CommandBehavior.CloseConnection))
                    {
                        while (reader.Read())
                        {
                            object newObject = new object();

                           // What must I do there?

                            listValue.Add(new { });
                        }
                    }
                }
                catch (Exception ex) { }
                finally
                {
                    if (connection.State == System.Data.ConnectionState.Open)
                        connection.Close();
                }
            }
            return listValue;
}

我认为您需要一个新的参数,比如'Func',让调用程序决定如何将datarow从数据库转换为实体。

catch Exception ex{}注意,这是个坏主意。你为什么不想知道为什么有些事情会失败?异常往往包含用于纠正问题的非常有用的信息。该模型在哪里,何时不是编译的一部分?如果它不是编译的一部分,那么您就没有模型。您只有SQL数据库,并且希望读取它。这是一个很简单的解决方案。在许多其他问题中可能存在重复…厄洛克斯,我必须朝哪个方向挖掘你应该看看