首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ-to-SQL连接

LINQ-to-SQL连接
EN

Stack Overflow用户
提问于 2011-07-16 01:39:41
回答 2查看 80关注 0票数 0

我有一个名为Payroll的表格。Payroll可以有许多PayStubs。换句话说,有一个名为PayStub的表,它是Payroll的子实体。PayStub有一个名为PayrollTax的子实体。我想要编写一个LINQ- to -SQL查询,以获取具有多个工资税的所有工资单。我使用以下查询:

代码语言:javascript
复制
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之间存在一对多的关系,我最终得到了两次相同的工资单。我想要一份独特的工资单。

任何想法和建议,我们将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-16 01:59:59

你试过.Distinct().ToList()吗?

或者,您可以像这样在join后面添加一个into

代码语言:javascript
复制
(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();
票数 0
EN

Stack Overflow用户

发布于 2011-07-16 04:39:49

我认为在这里使用Any (在SQL中是EXISTS)可能会对您有所帮助。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6711038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档