在 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