2011-01-25 4 views
2

고객 ID의 목록 인 custList (문자열 중)가 있습니다.LINQ to Dataset - sql과 같습니다 (where ... in ...)

고객 테이블에있는 모든 고객을 얻으려면 데이터 세트에 LINQ 쿼리를 사용하고 싶습니다. 여기서 customerID는 "내"custList of string입니다.

LINQ에서 가능합니까? 나는 온라인으로 수색하고 응답을 찾아 내지 않았다. 나는 ... LINQ에

감사 LINQ에서

+0

모든 속도 응답을 주셔서 감사합니다! 나는 다음과 같이 사용했다 : Dim query1 = 레코드에서 ds.Tables ("Customers"). AsEnumerable() _ 여기서 lst.Contains (record.Field (Of cString) ("custID")) 레코드 선택 – novice

+0

You 're 환영. 유용한 답변을 upvote하고 가능하면 문제를 해결 한 답을 수락 된 것으로 표시하십시오. –

답변

1
var custList = new HashSet<string>() { "a", "b", "c"...}; 

from record in table.ToEnumerable() 
where custList.Contains(record.Field<string>("customerID")) 
+0

완벽하게 작동했습니다. 나는 LINK를 좋아한다 !! – novice

2

당신이 쿼리의 이러한 종류를 수행 할 Contains() 방법을 사용하여 새로운 해요.

나는 데이터 집합에 LINQ를 모르겠지만, LINQ에서 다음 작업을 수행 할 수있는 SQL로 :

select * from Product p 
where p.Id in (1, 2, 3) 

(어떻게 참고 :

var statuses = new int[] {1, 2, 3}; 

var query = from p in dataContext.Products 
      where statuses.Contains(p.Id) 
      select p; 

이 유사한 SQL을 생성한다 생성 된 SQL에 대한 LINQ 코드의 앞뒤가 맞습니다. SQL을 잘 알고 있으면 매우 직관적이지는 않지만 기존 .NET 언어 기능을 매우 우아하게 사용하는 이유입니다.

이것은 일반적으로 string과 L2S가 프레임 워크에 포함되어 있기 때문에 L2S가 알고있는 다른 기본 유형의 모음에서 작동합니다.

0
var custList = new HashSet<int> { 10, 15, 17 }; 
CustomerSet.Where(c => custList.Contains(c.CustomerID));