在 crystal 报表 Entity Framework 中加入两个表 c#
Join two tables in crystal report Entity Framework c#
我有两个表 Estate 和 Estate Type。但我不知道如何编写正确的 LINQ 查询以将它们作为 crystal 报告的数据源。
Agency_Kursovaya_v5Entities AgencyContext= new Agency_Kursovaya_v5Entities();
public EstateReportForm()
{
InitializeComponent();
AgencyContext = new Agency_Kursovaya_v5Entities();
//var a = AgencyContext.Estate.GroupJoin()
//AgencyContext.Estate.Join(AgencyContext.EstateType.Where())
//ObjectSet<Estate> estates = new Estate();
//ObjectSet<EstateType> estateTypes = new AgencyContext.EstateType;
AgencyContext.Estate.Where(id => id.EstateID > 0).ToArray();
AgencyContext.EstateType.Where(etId => etId.EstateID > 0).ToArray();
}
private void EstateReportForm_Load(object sender, EventArgs e)
{
}
private void crystalReportViewer1_Load(object sender, EventArgs e)
{
//var estJoin = (from est in AgencyContext.Estate join eType in AgencyContext.EstateType on est.EstateID equals eType.EstateID where est.EstateID == eType.EstateID select est).ToArray();
//var clByEst =
// (from c in AgencyContext.Client
// join esT in AgencyContext.Estate on c.ClientID equals esT.ClientID
// select c.ClientName).ToArray();
EstateDataSet estateDataSet =new EstateDataSet();
BindingSource bindingSource = new BindingSource();
bindingSource.DataSource = estateDataSet;
EstateCrystalReport estateCrystalReport1 = new EstateCrystalReport();
crystalReportViewer1.ReportSource = estateCrystalReport1;
crystalReportViewer1.Refresh();
}
如果您使用 CrystalReports 和来自多个表的数据,则在报表中执行联接(请参阅报表设计器中的 Database Expert... -> Links
)。您可以像这样设置报告数据源:
var est = AgencyContext.Estate.Where(...).ToArray();
var etype = AgencyContext.EstateType.Where(...).ToArray();
// You might have to enter debug mode to determine the correct Table indicies
estateCrystalReport1.Database.Tables[0].SetDataSource(est);
estateCrystalReport1.Database.Tables[1].SetDataSource(etype);
您可以参考 Whosebug 的答案 here。
我有两个表 Estate 和 Estate Type。但我不知道如何编写正确的 LINQ 查询以将它们作为 crystal 报告的数据源。
Agency_Kursovaya_v5Entities AgencyContext= new Agency_Kursovaya_v5Entities();
public EstateReportForm()
{
InitializeComponent();
AgencyContext = new Agency_Kursovaya_v5Entities();
//var a = AgencyContext.Estate.GroupJoin()
//AgencyContext.Estate.Join(AgencyContext.EstateType.Where())
//ObjectSet<Estate> estates = new Estate();
//ObjectSet<EstateType> estateTypes = new AgencyContext.EstateType;
AgencyContext.Estate.Where(id => id.EstateID > 0).ToArray();
AgencyContext.EstateType.Where(etId => etId.EstateID > 0).ToArray();
}
private void EstateReportForm_Load(object sender, EventArgs e)
{
}
private void crystalReportViewer1_Load(object sender, EventArgs e)
{
//var estJoin = (from est in AgencyContext.Estate join eType in AgencyContext.EstateType on est.EstateID equals eType.EstateID where est.EstateID == eType.EstateID select est).ToArray();
//var clByEst =
// (from c in AgencyContext.Client
// join esT in AgencyContext.Estate on c.ClientID equals esT.ClientID
// select c.ClientName).ToArray();
EstateDataSet estateDataSet =new EstateDataSet();
BindingSource bindingSource = new BindingSource();
bindingSource.DataSource = estateDataSet;
EstateCrystalReport estateCrystalReport1 = new EstateCrystalReport();
crystalReportViewer1.ReportSource = estateCrystalReport1;
crystalReportViewer1.Refresh();
}
如果您使用 CrystalReports 和来自多个表的数据,则在报表中执行联接(请参阅报表设计器中的 Database Expert... -> Links
)。您可以像这样设置报告数据源:
var est = AgencyContext.Estate.Where(...).ToArray();
var etype = AgencyContext.EstateType.Where(...).ToArray();
// You might have to enter debug mode to determine the correct Table indicies
estateCrystalReport1.Database.Tables[0].SetDataSource(est);
estateCrystalReport1.Database.Tables[1].SetDataSource(etype);
您可以参考 Whosebug 的答案 here。