Linq to SQL - Как сравнить с коллекцией в предложении, где? - PullRequest
1 голос
/ 02 января 2011

Я хотел бы сравнить с коллекцией IEnumerable в моем предложении where.Нужно ли вручную циклически проходить по коллекции, чтобы вытащить столбец, с которым я хочу сравнить, или есть общий способ справиться с этим?

Я хочу что-то вроде этого:

public IEnumerable<Cookie> GetCookiesForUsers(IEnumerable<User> Users)
{
    var cookies = from c in db.Cookies
              join uc in db.UserCookies on c.CookieID equals uc.CookieID
              join u in db.Users on uc.UserID equals u.UserID
              where u.UserID.Equals(Users.UserID)
              select c;
    return cookies.ToList();
}

Я привык использовать лямбда-синтаксис Linq to SQL, но я решил попробовать синтаксис SQLesque, так как в этот раз я использовал соединения.

Какой хороший способ сделать это?

1 Ответ

2 голосов
/ 02 января 2011

Попробуйте это: http://blog.wekeroad.com/2008/02/27/creating-in-queries-with-linq-to-sql/

public IEnumerable<Cookie> GetCookiesForUsers(IEnumerable<User> Users)
{
    var cookies = from c in db.Cookies
              join uc in db.UserCookies on c.CookieID equals uc.CookieID
              join u in db.Users on uc.UserID equals u.UserID
              where Users.Contains(u.UserID)
              select c;
    return cookies.ToList();
}

Или, возможно:

public IEnumerable<Cookie> GetCookiesForUsers(IEnumerable<User> Users)
{
    var cookies = from c in db.Cookies
              join uc in db.UserCookies on c.CookieID equals uc.CookieID
              join u in db.Users on uc.UserID equals u.UserID
              where Users.Select(x => x.UserID).Contains(u.UserID)
              select c;
    return cookies.ToList();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...