我在使用Linq To Entities时遇到了查询多对多关系的问题。我基本上是想用Linq复制这个查询:
Select *
FROM Customer
LEFT JOIN CustomerInterest ON Customer.CustomerID = CustomerInterest.CustomerID
LEFT JOIN Interest ON CustomerInterest.InterestID = Interest.InterestID
WHERE Interest.InterestName = 'Football'
我在网上搜索了很多,但并没有找到一个合适的例子来实现这个功能。最接近的例子是:
List<Customer> _Customers = (from _LCustomers in _CRM.Customer.Include("CustomerInterest.Interest")
where _LCustomers.CustomerInterest.Any(x => x.Interest.InterestName == "Football")
select _LCustomers).ToList();
这样做的问题是,如果客户有多个兴趣爱好,其中一个是“足球”,那么所有兴趣爱好都会被返回。我还看过All(),它有相反的问题,即只有当他们有一个兴趣爱好是足球时才会返回,如果他们有两个兴趣爱好,其中之一不是足球,则什么都不会返回。
有人有什么想法吗?