2011-12-27 3 views
1

내 최종 결과를 국가 형식의 일반 목록 (도형을 변경하지 않고)으로 만들고 싶습니다. 어떤 linq 쿼리를 써서 CountryName이 'C'로 시작하는 모든 국가에서 StateName이 'S'로 시작하는 상위 3 개 주를 제공합니까?LINQ INNER 선택 맨 위로

IE : 내 객체뿐만 아니라 외부 객체에서도 검색하려고합니다. X

public class Country 
{ 
    public string CountryName { get; set; } 
    public List <State> StateList { get; set; } 
} 

public class State 
{ 
    public string StateName { get; set; } 
} 

답변

4

내 내부 객체의 수를 제한하는 당신은 사용할 수있는 모든() 특정 국가에 대한 미국의 어느와 'S'시작되었는지 확인합니다. Take()를 사용하면 결과의 수를 제한 할 수 있습니다. 다음 쿼리와

당신에 대한 국가의 수를 제한 (최대) 세 :

List<Country> result = (from c in countries 
           where c.CountryName.StartsWith("C") && c.StateList.Any(s => s.StateName.StartsWith("S")) 
           select new Country() 
              { 

               CountryName = c.CountryName, 
               StateList = (from s in c.StateList 
                  where s.StateName.StartsWith("S") 
                  select s).Take(3).ToList() 
              }).ToList(); 
+0

가 선택 새로운 필요한가? 기본적으로 실제 시나리오에서, 나는 1850 만 개의 내부 레코드에서이를 수행 할 것입니다. 따라서 성능에 대해 단지 걱정할 것입니다. – Raj

+0

Entity Framework에서 Entity에 Linq를 사용하고 있습니까? 그렇다면이 시나리오에 대한 자동 픽스 업과 함께 변경 추적 메커니즘을 사용할 수 있습니다. 그러나 솔직히 말해서, 1 천 8 백 5 십만 건의 기록을 보면 사용하는 모든 옵션에 다소 시간이 걸릴 것입니다. –

관련 문제