1
This is how i return Datatable 
Then how to assign that datatable to list<> (is it possible to assign datatable to list<>) ??


 public DataTable Vehiclelist(string Vehicle)
        {
            SqlCommand newCmd = conn.CreateCommand();
            newCmd.Connection = conn;
            newCmd.CommandType = CommandType.Text;
            newCmd.CommandText = "SELECT * from  where  Vehicle_No ='" + Vehicle+ "'";

            SqlDataAdapter da = new SqlDataAdapter(newCmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            conn.Close();
            return dt;
    }

上面的代码段从表中读取数据并作为数据表返回然后告诉如何将此数据表分配给后面代码中的 List<> 或者告诉如何从数据库中读取数据作为 List<>

4

3 回答 3

2

与 DataTable 相反,List<T>是一个强类型的泛型集合。因此,您可以从定义一个模型开始,该模型将代表该集合的每个元素:

public class Vehicle
{
    public int Number { get; set; }
    public string Make { get; set; }
    public string Model { get; set; }
    ...
}

接着:

public List<Vehicle> Vehiclelist(string Vehicle)
{
    var result = new List<Vehicle>();

    using (SqlConnection conn = new SqlConnection("PUT YOUR CONNECTION STRING HERE"))    
    using (SqlCommand cmd = conn.CreateCommand())
    {
        conn.Open();
        cmd.CommandText = "SELECT * FROM Vehicles WHERE Vehicle_No = @Vehicle_No";
        cmd.Parameters.AddWithValue("@Vehicle_No", Vehicle);
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                result.Add(new Vehicle
                {
                    Number = reader.GetInt32(reader.GetOrdinal("Vehicle_No")),
                    Make = reader.GetString(reader.GetOrdinal("Vehicle_Make")),
                    Model = reader.GetString(reader.GetOrdinal("Vehicle_Model"))
                });
            }
        }
        return result;
    }
}

还要注意使用参数化查询来避免您的代码易受攻击的 SQL 注入。

Dapper为了简化将数据库列映射到 CLR 类型的过程,您可以考虑使用 ORM ,例如ADO.NET Entity Framework

于 2013-05-23T06:08:05.103 回答
0

列表列表 = dt.AsEnumerable().ToList();

于 2013-05-23T06:15:54.367 回答
0

你的意思是这样的:

var results = dt.AsEnumerable()
                .Select(row => new {VehicleNo = row["Vehicle_No"].ToString()})
                .ToList();

这将为您提供一个列表(它将是匿名类型),但是如果您有一个可以映射到的具体类型,您也可以实例化它:

List<Vehicle> results = dt.AsEnumerable()
                          .Select(row => new Vehicle {VehicleNo = row["Vehicle_No"].ToString()})
                          .ToList();
于 2013-05-23T06:12:52.893 回答