好日子,C#LINQ查询过滤器子集合
我有一个像下面
public class EmployeeModel
{
[Key]
public int employeeId{get;set;}
public string Fullname {get;set;}
public string Address{get;set;}
public ICollection<PaymentModel> Payments {get;set;}
}
public class PaymentModel
{
[Key]
public int PaymentId{get; set;}
public int employeeId{get; set;}
public decimal PaymentAmount{get; set;}
public int IsPosted {get; set;}
public virtual EmployeeModel Employee {get; set;}
}
我只是想与他们使用LINQ付款列表一起查询员工列表中选择一个模型类。所以我这样的代码:
dbcontext db = new dbcontext();
var listing = from d in db.Employees
.include("Payments")
select d;
此列表显示所有员工及其所有付款。 但我需要过滤每个员工付款,IsPosted = 1
所以最初的答案,虐待这样的代码;
dbcontext db = new dbcontext();
List<EmployeeModel> FinalList = new List<EmployeeModel>();
var listingofEmp = db.employee.ToList();
foreach(EmployeeModel emp in listingofEmp){
emp.Payments= db.payments.where(x => x.IsPosted == 1).ToList();
FinalList.Add(emp);
}
我的问题是,是否有任何其他方式来更容易编码?像这样的东西。
dbcontext db = new dbcontext();
var listing = from d in db.Employees
.include(d => x.Payments.IsPosted == 1)
select d;
IM curently使用的EntityFramework 5
香港专业教育学院的研究把它不为我工作Link
希望有人能帮助我
在此先感谢家伙
它的工作原理就像一个魅力.. !!!谢谢你帮助先生伊万..先生伊万我可以问我在哪里可以了解更多linq?任何链接或书籍?希望听到你的先生请;(... – Neil
嗨尼尔,我真的不知道该怎么建议你。林肯定LINQ有很多优秀的书籍/链接,但我个人从MSDN主题学到了一切,主要是尝试。请注意,不同的LINQ实现具有特定的细节,因此上面的例子可能适用于或不适用于最新的EF Core。 –
有没有在ef6中使用linq做同样的方法?我在ef6中尝试了相同的逻辑,但它没有过滤子集合。 – overloading