SelectMany linq来自基本相同实体的多个集合

时间:2016-10-26 15:42:04

标签: c# entity-framework linq entity-framework-6

我的对象有很多collections

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;}
    }

一个人可以拥有list of addresses,但只有一个是最新的,list of Jobs但只有一个是最新的。

我需要编写一个linq to sql实体框架查询,我在其中选择Id= 1的人并获取current job and current address

然后选择然后从person, current address and current job中选择一些字段。

1 个答案:

答案 0 :(得分:3)

假设JobAddress有一个名为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)
                   });
}            

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