简体   繁体   English

如何从LINQ填充数据集

[英]How to fill dataset from LINQ

I have created a dataset - how do I fill this dataset with data from a database by a LINQ query? 我已经创建了一个数据集-如何通过LINQ查询用数据库中的数据填充该数据集? I dont even know if I'm doing right. 我什至不知道我做对了。 I want to use this data set as a datasource for my report. 我想将此数据集用作报告的数据源。

Here's my code: 这是我的代码:

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

You can use DataTableExtensions.CopyToDataTable Method to solve your issue. 您可以使用DataTableExtensions.CopyToDataTable方法来解决您的问题。

For additional information look at this MSDN topics 有关其他信息,请参见此MSDN主题。

Creating a DataTable From a Query 通过查询创建数据表

Queries in LINQ to DataSet LINQ to DataSet中的查询

You Can use this function to convert your list into DataTable and then fill your DataSet with your DataTable 您可以使用此功能将列表转换为DataTable,然后用DataTable填充DataSet

Call it this Way 这样称呼

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

To Convert to 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;
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM