如何使用Linq过滤主细节关系的详细记录

时间:2014-09-03 09:40:43

标签: c# sql linq

我编写了自己的对象来表示我的SQL表,并包含了一个外键关系,如下所示

[Table(Name = "tbl_employee")]
public class employee
{
    private EntitySet<workDay> _hours;
    public employee()
    {
        this._hours = new EntitySet<workDay>(OnDtlAdded, OnDtlremoved);
    }

    private void OnDtlAdded(workDay addedDtl) { addedDtl.Employee = this; }
    private void OnDtlremoved(workDay removedDtl) { removedDtl.Employee = null; }


    [Association(ThisKey = "employeeID", Storage = "_hours", OtherKey = "employeeID")]
    public EntitySet<workDay> Hours
    {
        get { return this._hours; }
        set { this._hours.Assign(value); }
    }

    [Column(IsPrimaryKey = true, IsDbGenerated = true)]
    public Int32 employeeID { get; set; }
    [Column]
    public String firstName { get; set; }
    [Column]
    public String nickName { get; set; }
    [Column]
    public String lastName { get; set; }
    [Column]
    public String idNumber { get; set; }

}

这一切都很完美,我可以轻松访问Hours实体集中的详细记录。我想知道是否可以根据某些标准自动过滤细节。这样做的原因是我在&#34; master / detail&#34;中显示这些项目。 datagridview组合如下:

var employees = from emp in db.Employees
                join empd in db.EmploymentDtls on emp.employeeID equals empd.employeeID
                where empd.termination == null && empd.deleted == 0 && emp.deleted == 0
                select emp;

dgvEmployees.DataSource = employees;
dgvHours.DataSource = employees;
dgvHours.DataMember = "Hours";

这使我可以显示每位员工的工作时间而无需进一步编码。我希望得到相同的结果,但是将小时数过滤到某个日期范围,我想知道是否有任何方法可以应用默认过滤器,可以在将详细信息加载到&#34;详细信息&#时应用34;的dataGridView。

1 个答案:

答案 0 :(得分:0)

我已经放弃了这个,因为我找不到实现它的方法。似乎没有其他人知道如何做到这一点,或者看过这个问题,或者事实上它是不可能的。感谢任何花费时间或精力试图解决问题的人。

我已经在选择了主数据网格视图中的一行时实现了过滤。