我有一张名为Payroll的表。 Payroll可以有很多PayStub。换句话说,有一个名为PayStub的表,它是Payroll的子实体。 PayStub有一个名为PayrollTax的子实体。我想编写一个LINQ-to-SQL查询,该查询可以获得具有多个工资税的所有工资单。我使用以下查询:
public IList<Payroll> GetPayrollsWithPayrollTaxes()
{
return (from payroll in ActiveContext.Payrolls
join payStub in ActiveContext.PayStubs on payroll.PayrollID equals payStub.PayrollID
where payStub.InternalPayrollTaxes.Count > 0
select payroll
).ToList();
}
问题是因为Payroll和PayStub之间存在一对多的关系,我最终获得了两次相同的Payroll。我想要一份独特的工资单清单。
非常感谢任何想法和建议!
答案 0 :(得分:1)
我认为使用Any
(SQL中为EXISTS
)可能会对您有所帮助。
public IList<Payroll> GetPayrollsWithPayrollTaxes()
{
return (from payroll in ActiveContext.Payrolls
where ActiveContextPayStubs.Any(payStub =>
payroll.PayrollID == payStub.PayrollID &&
payStub.InternalPayrollTaxes.Any())
select payroll
).ToList();
}
答案 1 :(得分:0)
您是否尝试过.Distinct().ToList()
?
或者您可以在into
之后添加join
,如下所示:
(from payroll in ActiveContext.Payrolls
join payStub in ActiveContext.PayStubs on payroll.PayrollID equals payStub.PayrollID into payStubGroup
where payStubGroup.Any(p => p.InternalPayrollTaxes.Any())
select payroll
).ToList();