我想在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语法,因为这次我使用了连接。
这样做的好方法是什么?
答案 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();
}