C# LINQ intersect()方法

C# LINQ intersect()方法,c#,.net,linq,C#,.net,Linq,我有以下表格: 每个咖啡爱好者都有几张与他有关的最喜欢的咖啡记录。我想使用LINQ查询获取给定咖啡Loverid的咖啡名列表 我想我需要使用Intersect()方法。 我试过这样做: using(DataContext db = new DataContext()) { var favCofRecords = db.FavouriteCoffeesRecords.Where(q => q.CoffeeLover.CoffeeLoverID == 1); var f

我有以下表格:

每个咖啡爱好者都有几张与他有关的最喜欢的咖啡记录。我想使用LINQ查询获取给定咖啡Loverid的咖啡名列表

我想我需要使用
Intersect()
方法。 我试过这样做:

using(DataContext db = new DataContext())
{   
    var favCofRecords = db.FavouriteCoffeesRecords.Where(q => q.CoffeeLover.CoffeeLoverID == 1);
    var favCoffees = db.Coffees.Select(q => q.CoffeeID).Intersect(favCofRecords.Select(q2 => q2.CoffeeID));
}

但是没有得到正确的结果。

我想你需要的是加入

from f in db.FavouriteCoffeesRecords
join c in db.Coffees on f.CoffeeID equals c.CoffeeID
where f.CoffeeLover.CoffeeLoverID == 1
select c.CoffeeName

你的思维方式太复杂了。您需要与给定的
CoffeeLoverID
相关的咖啡名称:

var results = 
 from c in db.Coffees
 where c.FavouriteCoffeesRecords.Any(rec => rec.CoffeeLoverID == someID)
 select c.Name;
这就是我用散文描述的问题


如果要查询某个表中的列,请从
from
子句中的该表开始,并对其进行筛选。

谢谢。我会试试这个解决方案。谢谢。我将尝试这个解决方案。我可以请你用lambda重写它吗?