如何从LINQ填充数据集



我已经创建了一个数据集-我如何通过LINQ查询从数据库的数据填充这个数据集?我甚至不知道我做得对不对。我想使用这个数据集作为我的报告的数据源。

下面是我的代码:

    public ActionResult Report()
    {
        int OrderId = GetLastOrderId();
      DataClasses1DataContext db = new DataClasses1DataContext();
  var t1 = (from p in db.Varors
                  join
                      op in db.OrderVarors on p.id equals op.IdVara
                  where op.IdOrder == OrderId
                  select new
                  {
                      p.Name,
                      p.details
                  }).ToList();
        MYDATASET ds = new MYDATASET();
       // Somthing LIKE
         ds.add(t1);
            ReportDocument rd = new ReportDocument();
            rd.Load(Path.Combine(Server.MapPath("~/Repport/CrystalReport1.rpt")));
            rd.SetDataSource(t1);
            Response.Buffer = false;
            Response.ClearContent();
            Response.ClearHeaders();

            try
            {
                Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
                stream.Seek(0, SeekOrigin.Begin);
                return File(stream, "application/pdf", "EverestList.pdf");
            }
            catch (Exception ex)
            {
                throw;
            }
    }

可以使用DataTableExtensions。CopyToDataTable方法来解决您的问题。

有关其他信息,请查看此MSDN主题

从查询创建数据表

LINQ查询数据集

你可以使用这个函数将你的列表转换成数据表,然后用你的数据表填充你的数据集

这样调用

DataTable dt = new DataTable();
dt = ConvertToDataTable(My_List);  

转换为DataTable

public DataTable ConvertToDataTable<T>(IList<T> data)
        {
            PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
            DataTable table = new DataTable();
            foreach (PropertyDescriptor prop in properties)
                table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
            foreach (T item in data)
            {
                DataRow row = table.NewRow();
                foreach (PropertyDescriptor prop in properties)
                    row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
                table.Rows.Add(row);
            }
            return table;
        }

相关内容

  • 没有找到相关文章