Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ到SQL连接_Linq_Linq To Sql - Fatal编程技术网

LINQ到SQL连接

LINQ到SQL连接,linq,linq-to-sql,Linq,Linq To Sql,我有一张叫做工资单的桌子。工资单可以有许多工资存根。换句话说,有一个名为PayStub的表,它是工资单的子实体。PayStub有一个名为PayrollTax的子实体。我想编写一个LINQtoSQL查询,以获取所有具有多个工资税的工资单。我使用以下查询: public IList<Payroll> GetPayrollsWithPayrollTaxes() { return (from payroll in ActiveContext.Payro

我有一张叫做工资单的桌子。工资单可以有许多工资存根。换句话说,有一个名为PayStub的表,它是工资单的子实体。PayStub有一个名为PayrollTax的子实体。我想编写一个LINQtoSQL查询,以获取所有具有多个工资税的工资单。我使用以下查询:

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();
        }
public IList GetPayrollsWithPayrollTaxes()
{
返回(来自ActiveContext.Payrolls中的工资单
在ActiveContext中加入payStub.PayStubs on payroll.PayrollID等于payStub.PayrollID
其中payStub.InternalPayrollTaxes.Count>0
选择工资单
).ToList();
}
问题是,由于工资单和工资存根之间存在一对多的关系,我最终得到了两份相同的工资单。我想要一份独特的工资单


任何想法和建议都将不胜感激

您是否尝试过
.Distinct().ToList()

或者,您可以在
连接后的
中添加
,如下所示:

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

我认为使用
Any
在SQL中存在
)可能会对您有所帮助

public IList<Payroll> GetPayrollsWithPayrollTaxes()
{
      return (from payroll in ActiveContext.Payrolls
              where ActiveContextPayStubs.Any(payStub => 
                 payroll.PayrollID == payStub.PayrollID && 
                 payStub.InternalPayrollTaxes.Any())
              select payroll
              ).ToList();
        }
public IList GetPayrollsWithPayrollTaxes()
{
返回(来自ActiveContext.Payrolls中的工资单
其中ActiveContextPayStubs.Any(payStub=>
payroll.PayrollID==payStub.PayrollID&&
payStub.InternalPayrollTaxes.Any())
选择工资单
).ToList();
}

非常感谢!.Distinct().ToList()对我很有效@Sai您应该避免对此类内容使用
Distinct
,因为它的性能很差。