2010-07-04 7 views
1

내 응용 프로그램의 저장소 및 서비스 계층을 만드는거야와 SQL하려면, 내 REPO 내 서비스 계층에서 내가하는 기능 등이있어 이제 아주 간단한 기능된 IQueryable Linq에 여러 사업자

Public Function GetRegions() As IQueryable(Of Region) Implements IRegionRepository.GetRegions 
     Dim region = (From r In dc.Regions 
       Select r) 
     Return region.AsQueryable 
    End Function 

있다 이

Public Function GetRegionById(ByVal id As Integer) As Region Implements IRegionService.GetRegionById 
     Return _RegionRepository.GetRegions().Where(Function(r) r.ID = id).FirstOrDefault 
    End Function 

하지만 추가하는 방법을 알아낼 수 없습니다 And r.isActive = True

사람이 쿼리에서 여러 사업자가하는 방법에 대한 올바른 방향으로 날 포인트?

답변

1

당신은 너무

Public Function GetRegionById(ByVal id As Integer) As Region Implements IRegionService.GetRegionById 
     Return _RegionRepository.GetRegions() _ 
     .Where(Function(r) (r.ID = id And r.isActive = True)).FirstOrDefault 
    End Function 

그 이유는 그것이 부울 반환해야처럼의 ()

내부에 술어를 넣을 필요가있다. 에 대한 응답으로을 편집하십시오. 저는 100 %가 아닙니다.하지만 여러분의 방법은 각 객체에 대해 두 번 수행하는 것으로 생각합니다. 기본적으로 항상 수행합니다. 항상 쿼리 개체에 대해 두 값을 비교하고 비교합니다. 여기서 광산은 조건이 거짓이 될 때까지 만 비교합니다. 또한 메서드를 사용하여 Or 작업을 수행 할 수 있는지 확실하지 않습니다.

+0

답변이 작동합니다 .. 내 것과 내 사이의 차이점을 알려주시겠습니까? –

+0

@rockinthesixstring, 내 편집 참조 – msarchet

1

C#만큼 vb 사람은 아니지만 where 문에 사용 된 표현식은 추가되는 위치에 있어야합니다. 그래서 당신은 현재 r.ID = id를 가지고 있습니다. 그냥 거기에 추가 할 것입니다. 그래서 그것은 : (의사 코드) r.Id = id 및 r.IsActive = True

+0

또한 여기에 비슷한 질문에 대한 링크가 있습니다. http://stackoverflow.com/questions/2500972/linq-to-sql-how-to-efficiently-do-either-an-and-or-an-or-search-for-multiple-cr – spinon

+0

답변 주셔서 감사합니다. ... 정확히 어떻게 알아 냈는지에 대한 답변을 아래쪽에 두었지만 시간을내어 도움을주었습니다. –

+0

고마워요. 네, 그냥이 링크를 보았습니다 : http://msdn.microsoft.com/en-us/vbasic/bb737944.aspx # 5는 아래 나열된 스타일을 보여줍니다. – spinon

0

이것은 내가 원하는 방식으로 작동하는 것 같습니다.

Public Function GetRegionById(ByVal id As Integer) As Region Implements IRegionService.GetRegionById 
     Return _RegionRepository.GetRegions() _ 
      .Where(Function(r) r.ID = id) _ 
      .Where(Function(r) r.isActive = True) _ 
      .FirstOrDefault() 
    End Function 
+0

@ msarchet의 대답은 부풀어 오른다. 누군가 그와 나의 차이점을 말해 줄 수 있니? –