首先,我是C#和EF的新手。
我在VS 2015 CE中使用模型设计器创建了许多实体并设置了关系。
我想查询实体以返回特定合同的所有客户(例如Contract_ID = 1),以及来自CustomerLocker和ContractCustomer实体的相关属性(对于CustomerLocker实体,如果它们存在,则返回null;如果它们存在,则返回null不是)。我还有来自Contract实体的LockerNumber值(例如100)。
如果有人可以帮助选择我需要的属性所需的LINQ查询,我将不胜感激。如果可能的话,我希望能够使用导航属性。
到目前为止,我可以选择客户,但无法从CustomerLocker实体中选择属性。
finalLayout
答案 0 :(得分:1)
您可以通过HasCard
过滤来获得CustomerLockers
的{{1}};
LockerNumber
查询;
CustomerLockers = cc.Customer.CustomerLockers
另外,我建议您将模型类定义为已知类型,而不是使用匿名类型。
答案 1 :(得分:0)
选项是获取客户列表而不仅仅是客户编号:
var myCustomers = (from cc in context.ContractCustomers
where cc.Contract_ID.Equals(contractID)
select new
{
Licencee = cc.IsLicencee,
Added = cc.AddedDate,
Firstname = cc.Customer.FirstName,
Lastname = cc.Customer.LastName,
DOB = cc.Customer.DateOfBirth,
Postcode = cc.Customer.PostCode,
CustomerNumber = cc.CustomerNumber,
listOfCustomers = cc.Customer.ToList() // <-Here, a list
}
)
然后你可以使用循环:
foreach(var customer in myCustomers.listOfCustomers)
{
var listOfLockers = customer.CustomerLockers.ToList();
}
但这更像是一个初学者的方式,记住在一个查询中拿出你需要的东西总是更好,比如Stormcloack的答案。
这个答案只是为了向您展示如何以简单的方式挖掘实体。