如何将DataTable设置为可枚举

本文关键字:枚举 设置 DataTable | 更新日期: 2023-09-27 18:20:35

我有一个名为Pinfo的表。我想做的是使用Linq查询从数据库中提取记录并返回它。但我做不到。这就是我目前所拥有的。我怎样才能使这个工作

List<ProductInfo> getList()
{
    List<ProductInfo> pi = new List<ProductInfo>();
    using (SqlConnection con = new SqlConnection("server=.''sqlexpress;database=Project;User Id=sa;Password=1"))
    {
        con.Open();
        using (SqlCommand cmd = new SqlCommand("select * from PInfo", con))
        {
            SqlDataAdapter adp = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            var query = from c in dt.AsEnumerable()
                        select new
                        {
                            id = c.Field<int>("Id"),
                            name = c.Field<string>("Name"),
                            price = c.Field<decimal>("Price")
                        };
            adp.Fill(query);
        }
    }
    return pi;
}

如何将DataTable设置为可枚举

这样试试

DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
return  (from c in dt.AsEnumerable()
         select new ProductInfo
                {
                     id=c.Field<int>("Id"),
                     name=c.Field<string>("Name"),
                     price=c.Field<decimal>("Price")
                 }).ToList();
  • 如果要返回ProductInfos的列表,则不应创建匿名类型
  • 您不需要SqlDataAdapter,只需使用DataTable的Load方法即可