【问题标题】:Join two tables in crystal report Entity Framework c#在水晶报表实体框架c#中加入两个表
【发布时间】:2015-04-23 16:02:05
【问题描述】:

我有两张表 Estate 和 EstateType。但我不知道如何编写一个适当的 LINQ 查询来将它们作为水晶报表的数据源。

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();

    }

【问题讨论】:

    标签: c# linq entity-framework join crystal-reports


    【解决方案1】:

    如果您使用 CrystalReports 和来自多个表的数据,则在报表中执行连接(请参阅报表设计器中的 Database Expert... -&gt; 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);
    

    您可以参考 StackOverflow 答案here

    【讨论】:

    • 现在它给了我错误:DataSet 不支持 System.Nullable at EstateCrystalReport1.Database.Tables[1].SetDataSource(etype);
    • 也许你在EstateType 中有一些可以为空的类型?如果没有看到定义,我很难知道。也许stackoverflow.com/questions/18910210/… 会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 2012-04-27
    • 1970-01-01
    • 2016-03-29
    • 2013-01-23
    相关资源
    最近更新 更多