C# 如何使用linq作为Microsoft报表的数据源
每个约会对象都包含一个考试对象。C# 如何使用linq作为Microsoft报表的数据源,c#,linq,report,C#,Linq,Report,每个约会对象都包含一个考试对象。 我想使用linq查询的结果作为报告的数据源。但是,报告中仅显示IEnumerable考试中的第一行,即使它包含81行。我怎样才能解决这个问题 出于您的目的,您可以使用以下代码: var exams = (from appointment in appointments select new {coursecode = (appointment.Tag as exam).ID}).ToList(); rpt.LocalReport.DataSources.Add
我想使用linq查询的结果作为报告的数据源。但是,报告中仅显示IEnumerable考试中的第一行,即使它包含81行。我怎样才能解决这个问题 出于您的目的,您可以使用以下代码:
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();
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();
}
作为旁注,
List
已经实现了IEnumerable
,不需要使用'exames.asenuerable(),只需通过考试
首先:你在使用什么ORM?Linq到SQL?实体框架(Linq到实体)?另外:“Microsoft report”-您是指SQL Server Reporting Services报表吗?我使用(几乎)相同的代码,工作正常。您的.rdlc
文件外观如何?你用桌子吗?在列表中是否有文本框
?可能存在将集合限制为仅显示一行的条件。
//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();
}