我在查询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(),即只有在他们有一个兴趣并且是足球的情况下才会返回,如果他们有两个兴趣并且其中一个不是足球则什么也不会返回。

任何人有任何想法吗?

最佳答案

尝试这个,

var result = from c in ctx.Customer
             from i in c.Interest
             where i.InterestName == "Football"
             select c;

希望这可以帮助,

射线。

10-07 18:39