我有以下表格:



每个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));
}


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

最佳答案

您正在以一种过于复杂的方式进行思考。您想要与给定CoffeeLoverID有关系的咖啡名称:

var results =
 from c in db.Coffees
 where c.FavouriteCoffeesRecords.Any(rec => rec.CoffeeLoverID == someID)
 select c.Name;


从字面上看,这是我在散文中描述的查询。

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

关于c# - LINQ intersect()方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25344119/

10-11 16:07