LINQ intersect()方法

时间:2014-08-16 21:24:01

标签: c# .net linq

我有以下表格:

enter image description here

每个CoffeeLover都有几个与他相关的FavouriteCoffeeRecords。我想使用LINQ查询获取给定CoffeeLoverID的CoffeeNames列表。

我想我需要使用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));
}

但未能得到正确的结果。

2 个答案:

答案 0 :(得分:1)

我认为您需要的是join

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

答案 1 :(得分:1)

你的想法太复杂了。您想要与给定CoffeeLoverID

有关系的咖啡名称
var results = 
 from c in db.Coffees
 where c.FavouriteCoffeesRecords.Any(rec => rec.CoffeeLoverID == someID)
 select c.Name;

这就是我在散文中描述的查询。

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