2011-01-02 2 views
1

내 where 절에서 IEnumerable 컬렉션과 비교하고 싶습니다. 비교 대상 열을 꺼내려면 컬렉션을 수동으로 반복해야합니까, 아니면이를 처리 할 수있는 일반적인 방법이 있습니까?Linq to SQL - where 절의 컬렉션과 비교하는 방법은 무엇입니까?

나는 이런 식으로 뭔가 싶어 : 나는 SQL 구문 람다 Linq에를 사용하여 사용 해요

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

을,하지만 난이 시간을 조인 사용 된 이후 SQLesque 구문을 사용하기로 결정했습니다.

이 작업을 수행하는 좋은 방법은 무엇입니까?

답변

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

두 번째 나를 위해 작동하고 참으로 IN 문을 만들 수 없습니다. 고마워요, 그리고 리소스 링크도! – Sgraffite