2014-10-30 3 views
1

다음과 같은 목록이 있습니다.목록의 최소값과 최대 값을 제거하기 위해 LINQ를 사용하는 방법

List<int> temp = new List<int> { 3, 5, 6, 8, 2, 1, 6}; 

나는 위 목록의 최소값과 최대 값을 제거하기 위해 LINQ를 사용하려고합니다.

예를 들어, 아래의 스 니펫 코드는 작동하지 않는 예일뿐입니다.

var newValue = from pair in temp 
       select pair < temp.Max() && pair > temp.Min() 

다음과 같은 결과가 기대됩니다.

newValue = {3, 5, 6, 2, 6 } 

나는 인터넷 검색을 시도했지만 아직 적절한 예를 찾을 수 없습니다.

LINQ를 사용할 때 작동합니까? 시간 내 줘서 고마워.

+0

코드를 실행하면 어떻게됩니까? –

+0

작동하지 않습니다. 그냥 null입니다. –

답변

5

where을 사용해야합니다.

from pair in temp 
where pair < temp.Max() && pair > temp.Min() 
select pair 

현재 접근 방식은 하지 필터를, 값이 범위에 있는지을 선택합니다. 그것이 where 절을위한 것입니다.

4

이 시도 : - Fiddle 작업

var query = temp.Where(x => x != temp.Min() && x != temp.Max()).ToList(); 

.

+0

니스! 중복이 있으면 모든 최소값과 최대 값을 제거합니다. – kuskmen

0

그냥 remove()를 사용하는 것이 아니라 왜 최소값과 최대 값을 제거해야하는지 알고 싶습니다. 그 쌍의 필요성은 무엇입니까? 이 같은

List<int> temp =new List<int>() { 3, 5, 6, 8, 2, 1, 6 }; 
    temp.Remove(temp.Max()); 
    temp.Remove(temp.Min()); 

또는 뭔가 당신이 온도를 유지하기 위해 필요 오히려 당신이 일반 컬렉션에서 배열을 추가 할 수 있었다 어떻게 사본

temp.Sort(); 
temp.Skip(1).Take(temp.Count - 2).ToList(); 
0

에서 작동한다면. 또한 쿼리 결과를 목록으로 변환해야합니다. @Matthew Haugen이 제안한대로 where 절을 사용하십시오.

List<int> temp = new List<int>();// {3, 5, 6, 8, 2, 1, 6} 

temp.Add(3); 
temp.Add(5); 
temp.Add(6); 
temp.Add(8); 
temp.Add(2); 
temp.Add(1); 
temp.Add(6); 

List<int> newValue = (from n in temp 
         where n > temp.Min() & n < temp.Max() 
         Select n).ToList(); 
+1

그것은 내가 생각하는 사용법에 달려 있습니다. 반드시 목록으로 변환 할 필요는 없습니다. :) – Pyromancer

관련 문제