2010-04-15 6 views
0

일부 확장 방법을 쓰는 중이며 지금까지 잘 진행 중입니다. IQueryable qry를 사용하고 qry의 지역 유형이 city 인 모든 지역을 반환해야하는 getCities 메소드가 있습니다.아음속으로 linq 쿼리를 작성하는 방법

linq을 사용하여 시도했지만 포기하고 현재 for 루프를 사용하고 있습니다. 그것은 작동하지만, 저를 괴롭 히고 있습니다. 나는 linq 문을 바닥에 나와있다, 그 작동하지 않습니다 주석 있습니다.

for 루프는 레코드를 올바르게 반환합니다. 주석 처리 한 linq 쿼리는 아무 것도 반환하지 않습니다.

영역은 Region_Type이 1 개 밖에 없지만 아음속은 컬렉션이므로 region.Type 영역을 가져 오기 위해 item.Region_Types.First()를 사용하고 있습니다.

public static IQueryable<Region> getCities(this IQueryable<Region> qry) 
    { 
     List<Region> returnCol = new List<Region>(); 
     foreach (var item in qry) 
     { 
      if (item.Region_Types.First().Name.ToLower().Trim().Equals("city")) 
      { 
       returnCol.Add(item); 
      } 
     } 

     return returnCol.AsQueryable(); 

     //return qry.Where(t => t.Region_Types.First().Name.ToLower().Trim().Equals("city")); 
    } 

답변

0

경우()가 아닌 된 IQueryable, 당신은 문장의 끝에 .AsQueryable를()를 IEnumerable 사용해야 반환 :

return qry.Where(t => t.Region_Types.First().Name.ToLower().Trim().Equals("city")).AsQueryable(); 
+0

당신이 올바른지,하지만 IQuerable있는 방법은 반환 할 수 있습니다 IEnumerable. 문제는 내 for 루프가 예상되는 레코드를 반환하는 동안 linq 문에서 아무 것도 반환하지 않는다는 것입니다. 내가 불분명하면 죄송합니다. – spaceman

+0

알았어, 이제 더 명확 해. :). 오해해서 미안해. Equals()를 == 연산자로 바꾸려고 했습니까? – mamoo

+0

그래, 노력했다. equals, == 및 compareTo .. 나는 아음속, 아음속 버그 및 linq 문제를 생각하기 시작하는 생성하는 아음속 쿼리를 얻을 수 있는지를 볼 수 있습니다. – spaceman

관련 문제