2012-11-29 2 views
0

linq을 사용하여 SQL에 mvc 프로젝트의 IQueryable 객체에서 데이터를 가져옵니다. 이 경우 사용자가 공통으로 가지고있는 앨범을 찾으려고합니다. 어떤 도움을 주셔서 감사합니다.linq to SQL을 사용하여 일반적인 데이터 찾기

Albums.Where(x=>x.userid == _userid && x.userid == _otheruserid); 
//This will pull all the respected albums from each user. 
//I just would like to pull the albums they have in common 
+1

앨범에 고유 식별자가 있습니까? 일반적으로 사용자 테이블, 앨범 테이블 및 다른 두 테이블을 연결하는 User_Albums 테이블과 같이 세 개의 테이블을 사용합니다. – TheEvilPenguin

+0

질문에있는 코드가 예상대로 실행됩니까? 'Albums.Where (x => x.userid == _userid && x.userid == _otheruserid)'는 '_userid == _otheruserid' 일 때만 앨범을 검색합니다 - 이것은 동일한 사용자를 암시합니다. –

+0

내가 제공 한 쿼리가 잘못되었다고 생각합니다. || && – RAS

답변

3

Intersect을 사용할 수 있습니다. 아주 쉽게 :

Albums.Where(x=>x.userid ==_userid) 
.Intersect(Albums.Where(x=>x.userid== _otheruserid)); 

편집 :
당신이 제공 한 코드를 들어, 당신이 그것에 할당 된 두 개의 서로 다른 사용자와 함께 한 앨범을 할 수 없기 때문에,에 맞게 특정 필드를 사용하고 싶습니다.

Albums.Where(x=>x.userid ==_userid).Select(x=>x.Name) 
    .Intersect(Albums.Where(x=>x.userid== _otheruserid).Select(x=>x.Name)); 

을하지만 @EvilPenguin가 언급 한 바와 같이, 당신은 당신의 테이블에 대한 더 나은 구조를 만드는 떨어져 아마 더 좋을 것 같아 : 당신이 이름을 기반으로 일반적인 앨범을 찾으려면, 당신이 사용하려고 할 수 있습니다.

+0

대신 코드에서 User1과 User2가 모두 동일한 앨범을 가지고있는 경우 두 앨범이 Albumyd 사용자 ID가 – TheEvilPenguin

+0

인 @TheEvilPenguin과 다른 개체가 될 것이라고 가정합니다. 네, 아마도 맞을 것 같습니다. 아마 OP는 특정 속성을 기반으로 그들을 찾고 싶어합니다. 내 대답을 업데이트하겠습니다. – RAS

관련 문제