C# 从基本同一实体中选择多个linq多个集合

C# 从基本同一实体中选择多个linq多个集合,c#,entity-framework,linq,entity-framework-6,C#,Entity Framework,Linq,Entity Framework 6,我有一个对象,它有许多集合 public class Person { public int id {get; set;} public ICollection<Address> Address {get; set;} public ICollection<Job> Job {get; set;} } public class Adress { public bool IsCurrent {get; set;} } public

我有一个对象,它有许多
集合

public class Person
{
 public int id {get; set;}
  public ICollection<Address> Address {get; set;}
  public ICollection<Job> Job {get; set;}
}

   public class Adress
    {
     public bool IsCurrent {get; set;}
    }
public class Job
    {
     public bool IsCurrent {get; set;}
    }
公共类人物
{
公共int id{get;set;}
公共ICollection地址{get;set;}
公共ICollection作业{get;set;}
}
公共类地址
{
公共bool是当前的{get;set;}
}
公开课工作
{
公共bool是当前的{get;set;}
}
一个人可以有一个
地址列表
,但只有一个是当前地址,一个
工作列表
但只有一个是当前地址

我需要编写一个
linq-to-sql
实体框架查询,在这里我选择
Id=1
的人,并获取
当前工作和当前地址


然后选择然后从
人员、当前地址和当前工作中选择一些字段
假设
工作
地址
有一个名为
IsCurrent
的布尔字段

using (YourDbContext context = new YourDbContext()) {
    int id = 1;
    var results = (from person in context.People
                   where person.Id == id
                   select new {
                       Person = person,
                       CurrentJob = person.Job.FirstOrDefault(j => j.IsCurrent),
                       CurrentAddress = person.Address.FirstOrDefault(a => a.IsCurrent)
                   });
}            

您可以将匿名对象更改为任何适合您的对象。

您可以展示您尝试过的内容吗?您的模型不完整,您提供的小代码没有实际帮助,甚至无法编译,并且您没有尝试解决自己的问题。是的,您还应该显示作业和地址实体。是的,再多一点信息可能会很有价值,但我想Job和Address实体必须有一个布尔标志或类似的东西,这是通常的做法:)@jorgonor-只是一点改进-用
FirstOrDefault
替换
Where().FirstOrDefault
和predicate@GiladGreen我不知道那个!不像这样啰嗦,我喜欢@乔戈诺-酷:)现在就像我要发布的一样:)你比我先到那里