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我不知道那个!不像这样啰嗦,我喜欢@乔戈诺-酷:)现在就像我要发布的一样:)你比我先到那里