Linq to Sql объединить две таблицы - PullRequest
2 голосов
/ 03 апреля 2012

У меня есть такая структура базы данных (1 - одна, 0 - много)

Product 1->0 Orders 0->1 Users

Мне нужно найти всех пользователей для указанного продукта, я начал писать запрос linq, но не знаю, как его завершить.

public IQueryable<User> GetUsers(int productId)
{            
  return _db.Products.First(p => p.Id == productId)....
}

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Перво-наперво, метод First вернет только первый элемент, который соответствует вашим критериям, и, поскольку вы хотите вернуть IQueryable из User с, это, вероятно, не то, что вы хотите.

Во-вторых, я думаю, что самый простой способ начать работу с Linq-to-SQL - это использовать нотацию запросов, особенно когда вы имеете дело с объединениями, которые выглядят не слишком красиво при использовании лямбда-выражений .

public IQueryable<User> GetUsers(int productId)
{
    return from p in _db.Products
           join o in _db.Orders on p.Id equals o.productId
           join u in _db.Users on o.userId equals u.userId
           where p.productId == productId
           select u;
}
1 голос
/ 03 апреля 2012

Примерно так должно работать (написано на VB.net):

Dim users() = (from x in _db.Users
             Join y in _db.Orders on y.userid equals x.userid
             Join z in _db.Product on z.productid equals y.productid
             where z.productname = "ProductName"
             select x.firstname,x.lastname,x.email,e.tel).toarray()

Я угадал поля в таблицах, но это даст вам имя, фамилию, адрес электронной почты и номер телефонапользователи, которые заказали определенный продукт.

Спасибо

Paul.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...