LINQ加入2个表

时间:2011-09-27 21:23:24

标签: linq join entity

我在数据库中有两个表,其中包含所有可能的杂货值列表。例如

Milk
Cheese
Bread
Meat

第二个表包含选中的Grocery项目。例如:

Milk
Cheese

我想要一个包含牛奶和奶酪的所有杂货项目的结果。

有什么想法吗?

以下是表格。

The GroceryList Table:
ID INT PK
Description Varchar(50)

The ShoppingList Table:
ID INT PK
GroceryListID int FK to GroceryList.ID

因此,生成的Entity将是GroceryList中的所有项目,如果它们存在于ShoppingList中,则选择的标记为true: ShoppingList.ID Grocerylists.Description 选中

2 个答案:

答案 0 :(得分:0)

编辑:听起来你还想做左连接。在你的情况下:

var LINQResult = from g in Datacontext.GroceryList
                 from s in DataContext.ShoppingList
                     .Where(c=>c.ID == g.ID)
                     .DefaultIfEmpty()
                 select new {
                    g.ID,
                    g.Description,
                    s.ID   // Will be null if not selected.
                  };

更多示例:

Left Join on multiple tables in Linq to SQL

答案 1 :(得分:0)

基于理解,你可以做这样的事情

//first get the list of product which satisfy your condition

    var ids = (from p ShoppingList 
              select p.GroceryListID ).ToList();

//second filter the Grocery products by using contains

    var myProducts = from p in GroceryList 
                     where ids.Contains(p.ID)
                     Select p;

如果你想获得有关加入的信息,那么这张图片可以帮助你

内部加入 enter image description here

外部加入 enter image description here

尝试了解哪些内容可以帮助您解决查询