LINQ Объединение 2 столов - PullRequest
       31

LINQ Объединение 2 столов

1 голос
/ 28 сентября 2011

У меня есть две таблицы в базе данных, одна содержит список всех возможных продуктовых значений.Например,

Milk
Cheese
Bread
Meat

во второй таблице содержатся выбранные товары из бакалеи.Например:

Milk
Cheese

Я хочу получить результат, в котором будут выбраны все возможные продуктовые товары с молоком и сыром.

Есть идеи?

Вот таблицы.

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

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

Таким образом, получающийся в результате объект будет всеми элементами из GroceryList, и если они существуют в ShoppingList, то выбранный элемент помечается как истинный: ShoppingList.ID Grocerylists.Description Selected

Ответы [ 2 ]

0 голосов
/ 28 сентября 2011

Основываясь на понимании, вы можете сделать что-то вроде этого

//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

Постарайтесь понять, что может помочь вам в решении вашего вопроса

0 голосов
/ 28 сентября 2011

Редактировать: По-прежнему звучит так, как будто вы хотите сделать левое соединение.В вашем случае:

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.
                  };

Дополнительные примеры:

Соединение влево для нескольких таблиц в Linq to SQL

...