【问题标题】:Inner join to LINQ内部连接到 LINQ
【发布时间】:2018-08-01 08:07:04
【问题描述】:

我是 Linq 的新手。从学习的角度来看,我正在尝试将以下 sql 查询转换为 linq 查询。然而,这没有给我任何东西。没有错误信息或任何东西。 sql 查询给了我表格,但 linq 没有给我值。 SQL 查询:

SELECT        
Members.FirstName, 
Members.LastName, 
PhoneScreens.BaselineEligibility
FROM            
Members INNER JOIN PhoneScreens ON Members.Id = PhoneScreens.MemberId
WHERE PhoneScreens.BaselineEligibility = 'eligible'

Linq 查询是:

context.Members
            .Include(p => p.PhoneScreens)
            .Where(y => y.PhoneScreens.BaselineEligibility == "eligible")
            .ToListAsync();

编辑: 以下是课程:

public class Member
{
   public string FirstName { get; set; }
   public string LastName { get; set; }

   public ICollection<PhoneScreen> PhoneScreens { get; set; }

   public Member()
   {
       PhoneScreens = new Collection<PhoneScreen>();
   }

}

public class PhoneScreen
{
    public string BaselineEligibility { get; set; }

    public Member Member { get; set; }
    public int MemberId { get; set; }
}

我将不胜感激。

【问题讨论】:

  • 首先请注意,您使用的是 ToListAsync,它返回一个任务。在 Members 类中如何引用 PhoneScreens 也很重要。检查this 以查看生成的请求。
  • 你怎么称呼那个linq?因为它返回一个Task&lt;List&lt;Member&gt;&gt;,所以你不能直接使用它,所以你需要展示一个更具体的例子
  • @RobertKitching 的回答是完全错误的,不知道你为什么接受这个
  • 我试过后才知道。您对 Linq 查询有什么建议吗?我打算在Where 子句中添加Any
  • @GoGo 将 ToListAsync() 更改为 ToList()。你为什么要添加Any - 你的代码看起来不错。随机变化不是你编程的方式。

标签: c# sql database linq


【解决方案1】:

这将完成工作:

context.Members
            .Include(c => c.PhoneScreens)
            .Where(m => m.PhoneScreens.Any(i => i.BaselineEligibility == "eligible"))

【讨论】:

    猜你喜欢
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多