Linq to SQL - 如何与where子句中的集合进行比较?

时间:2011-01-02 02:51:05

标签: c# linq-to-sql lambda

我想在where子句中与IEnumerable集合进行比较。我是否需要手动遍历集合以提取我想要比较的列,或者是否有通用的方法来处理它?<​​/ p>

我想要这样的事情:

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();
}

我习惯使用lambda Linq to SQL语法,但我决定尝试SQLesque语法,因为这次我使用了连接。

这样做的好方法是什么?

1 个答案:

答案 0 :(得分:2)

试试这个: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();
}