如何将DataTable设为Enumerable

时间:2014-09-04 13:51:15

标签: c# asp.net linq

我有一个名为Pinfo的表,我想要做的是使用Linq查询从db中获取记录并返回它。但我无法做到。这就是我到目前为止。我如何才能完成这项工作

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;
}

1 个答案:

答案 0 :(得分:0)

以这种方式试试

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方法。