2016-11-03 2 views
1

나는 2 개의 아이템 목록을 가지고있다;두 목록을 비교하는 linq를 사용하여 정렬 하시겠습니까?

IEnumerable<Investigator> investigators = RepositoryContext.InvestigatorRep.GetInvestigators(site.Site.Id, out totalCount); 

var NewInvestigators = base.ActivePage.Investigators; 

은 내가 일치해야하는 수사관 30 개 항목과 NewInvesigators 20 개 항목 모두 속성 Id, 인비 드 가지고 있습니다.

 var all = investigators.Where(b => crInvestigators.Any(a => a.InvestigatorId == b.Id)); 

나는이 시도하지만 난 그 두 목록의 아이디와 일치를 기반으로 새 목록을 만들려면 근무하지. ID가 일치하면 특정 수사관을 얻습니다 (기본적으로 NewInvesigators에있는 Id를 기반으로 한 수사관의 정렬).

각각을 사용하여 할 수 있지만 linq으로 가능한지 알고 싶습니다.

in newinvestigator 두 개의 속성, 조사자 ID 및 이름을 가진 개체가 있습니다.

연구원에서 ID, City, country 속성이 있습니다. 조사자 목록에 이름 또는 조사자가 없습니다.

+0

예 joi n in linq –

+1

목록의 항목이 다른 목록에 포함되어 있는지 찾기 위해 [LINQ 쿼리]의 가능한 복제본] (http://stackoverflow.com/questions/12656582/linq-query-to-find-if-items-in- 다른리스트에 포함되어있다) –

+0

Linq에서 가능하다. use join – Viplock

답변

2

당신은 이런 식으로 뭔가를 시도 할 수 :

var result = investigators.Where(inv=>NewInvestigators.Any(ninv=>ninv.id == inv.investigatorId)) 
          .OrderBy(inv=>inv.id); 

또 다른 방법은 같은 결과가 join을 사용하세요.

var result = from inv in investigators 
      join ninv in NewInvestigators 
      on inv.id equals ninv.investigatorId 
      order by inv.id 
      select inv; 
+0

@Downvoter 난 downvote에 대한 귀하의 추론을 주셔서 감사하겠습니다. 미리 감사드립니다. – Christos

+0

솔루션은 정확하므로 누구나 투표가 내려지는 이유를 알지 못합니다. OP 만 또한 정렬을 찾고 있으며,이 솔루션은 O (N^2) 시간의 복잡성을 갖기 때문에 개선 될 수 있습니다. . –

+0

@MrinalKamboj 고맙습니다. 나는 또한 주문을 추가했다. – Christos

0

은 다음 // NewInvestigator 목록에서 HashSet의를 만들기로 :

HashSet<int> newInvestigatorHashset = 
     new HashSet<int>(newInvestigators.Select(element => element.NewInvestigatorId)); 

// 가져 오기 공동 연구자가

var commonInvestigatorList = 
    investigators.Where(element => newInvestigatorHashset.Contains(element.Id)); 

// 주문 조사관 위에서 만든 ID의 HashSet의에 baesd 데이터

var result = commonInvestigatorList.OrderBy(i => i.Id); 
+0

두 목록에 정확한 데이터가 없습니다. 조사관에게 이드가 있다고 생각하고, 새로운 수사관에게 저는 InvestigatorId가 있습니다. 나는 그것을 일치시켜야한다. –

+0

옵션이 있습니다. Linq 변환을 사용하여'NewInvestigators'를'Investigator'로 간단히 변환 할 수 있고,'IEqualityComparer'를 제공하고, 코드 –

+0

을 편집 할 수 있습니다. newinvestigator에서는 불가능합니다. 두 개의 속성, 조사자 아이디와 이름. 연구원에서 나는 ID, City, country라는 소유물을 가지고 있습니다. 조사자 목록에 이름 또는 조사자가 없습니다. –

관련 문제