我如何使用linq作为Microsoft报告的数据源

时间:2011-02-09 18:57:19

标签: c# linq report

var exams = (from appointment in appointments select new {coursecode = (appointment.Tag as exam).ID}).ToList();

rpt.LocalReport.DataSources.Add(new ReportDataSource("dsExam". exams.AsEnumerable()));
rpt.ProcessingMode = ProcessingMode.Local;
rpt.RefreshReport();

每个约会对象都包含一个考试对象。 我想使用linq查询的结果作为我的报告的数据源。但是,只有IEnumerable考试中的第一行才显示在报告中,即使它包含81行。我怎样才能解决这个问题。

2 个答案:

答案 0 :(得分:1)

var exams = (from appointment in appointments
               select new
                    {
                          ((Exam)appointment.CustomFields["Field"]).Id,
                          ((Exam)appointment.CustomFields["Field"]).Name,
                          ((Exam)appointment.CustomFields["Field"]).Date,
                                     ((Exam)appointment.CustomFields["Field"]).Period.StartTime,
                                     ((Exam)appointment.CustomFields["Field"]).Period.EndTime,
                                     Location = ((Exam)appointment.CustomFields["Field"]).Location.Name
                                });

        SetDataSource(exams);


    private void SetDataSource(object exams)
    {          
        scheduleBindingSource.DataSource = exams;
        this.rpTTViewer.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
        this.rpTTViewer.RefreshReport(); 
    }

答案 1 :(得分:0)

您可以使用以下代码:

//Create a dataset typed
DataSet ds = new DataSet();

//Constructor a dataset from Dataset Model, dataset use for crystal report
DataSet1.print_salesDataTable tb = new DataSet1.print_salesDataTable();

//Queries with the conditions is ID
QLGiayDepEntities list = new QLGiayDepEntities();
var result = (from n in list.print_sales
              where n.OrderID == txtID.Text
              select n).ToList();

//Fill result to table
foreach (print_sales item in result)
{
    tb.Rows.Add(
        item.OrderID,
        item.DateOrder,
        item.NameEmployee,
        item.Total,
        item.Recieved,
        item.Discount,
        item.Sum,
        item.FromCustomer,
        item.Notes,
        item.Barcode,
        item.Name,
        item.ColorName,
        item.SizeID,
        item.Quantity,
        item.Price,
        item.SubTotal);
}

//checking to print
if (result == null)
{
    MessageBox.Show("null");
}
else
{
    ds.Tables.Add(tb);
    CrystalReportSales1.SetDataSource(ds);
    crystalReportViewer1.ReportSource = CrystalReportSales1;
    crystalReportViewer1.PrintReport();
}