2012-05-29 2 views
0

의 LINQ 콤보와 정규식 "00000044"그래서, 내가 엔티티 프레임 워크에서 채워이것은 linq에서 까다로운가요? 나는 형식이 될 수있는 속성 문자열 모델이

public class Foo 
{ 
    private string MemberNo { get; set; } 
} 

의 목록을 조회하고있어

우리의 세트를 가정

"00000044" include this 
"44000000" include this 
"20440000" exclude this 

어떻게 우리의 검색 기준의 왼쪽에 아닌 숫자 아무것도 제외됩니다 쿼리를 작성하는 "44"

,536 다음을 포함

Regex를 linq와 결합 할 수 있습니까? 아니면 똑똑한 방법이 있습니까?

+0

'0 * 44'은 어떻습니까? 'foo.MemberNo.TrimStart ('0 '). StartsWith ("44")'를 사용하여 "44"가 첫 번째 0이 아닌 일치인지 확인합니다. – SimpleVar

+0

안녕하세요. 응답 해 주셔서 감사합니다. 당신은 내게 linq 쿼리를 보여줄 수 있습니까? 우리는 0 * 44 정규 표현식을 사용합니다. 쿼리를 작성하는 방법은 EF-apolz를 쿼리하는 것입니다. – MikeW

+0

모든 데이터를 가져 와서 필터링하지 않고 DB별로 필터링하기를 원하지 않기 때문에 SQL 쿼리에서 LIKE 키워드를 읽으십시오. – SimpleVar

답변

6
var filteredFoos = myFoos 
    .Where(foo => foo.MemberNo.TrimStart('0').StartsWith("44")); 

지금이 다시 모든 Foos을 가지고 싶다면,하지만 당신은 사용하고자하는 경우 엔티티 프레임 워크, this 답변을 올바르게 번역 해보십시오.

+0

감사합니다. – MikeW

1
var result = fooList.Where(foo => Regex.IsMatch(foo.MemberNo, @"^0*44\d*$")); 

는 또한 MemberNo 속성을 공개해야합니다.

편집

또는 대안 적으로, 정규식 - 무료 버전 :

var result = fooList.Where(foo => foo.MemberNo.TrimStart('0').StartsWith("44")); 
+0

44는 입력 가능한 검색 필드 일 수 있기 때문에 정규식에서 벗어날 수 있습니다. –

+0

@YuriyFaktorovich 그럴 경우 즉시 정규식 패턴을 만드는 것이 쉽습니다. 의미있는 이름을 가진 변수에이 패턴이 있으면 더 읽기 쉽습니다. 즉, 필터링 할 'Foo'가 많으면 정규 표현식이없는 버전을 편집하는 것이 좋을 것입니다. –

+0

@Yuriyaktorovich 그리고 나서 나는 당신의 대답과 같은 것으로 나타났습니다. 도! –

관련 문제