IQueryable 데이터 소스에서 다음 값을 조회하려고합니다.와일드 카드 검색
사용자는 값을 입력하여 Silverlight 응용 프로그램의 텍스트 상자에 결과를 필터링 한 다음 이러한 입력을 필터링하여 내 도메인 서비스로 보낼 수 있습니다.
"*"는 사용자가 와일드 카드 검색을 수행하기 위해 입력 할 수 있으므로 'TYPE'이 "P32"로 시작하는 모든 값을 반환합니다.
List<string> params = new List<string>() { "P32*", "P4552", "P2311" };
그때 내 도메인 서비스 코드에서 함수에이 목록을 전달합니다
IQueryable<MyClass> temp = this.ObjectContext.MyClass.AsQueryable();
temp = temp.Where(c => params.Contains(c.TYPE));
이 내 와일드 카드 검색을 구현하고 싶었 전에 내가 한 것입니다. 이 작업을 수행하는 가장 깨끗한 방법은 무엇입니까? 나는 내 PARAMS 목록을 루프와 같은 뭔가를해야하고 (좀 더 문자열 처리 후) 각 문자열에 포함하려고 거라고 생각하지만 그 방법은, 당신이 필요를이 작업을 수행하기 위해
foreach (string x in params)
{
//look for * wildcard... do some other stuff
temp = temp.Where(c=>c.TYPE.Contains(x));
}
염두에 두어야을 당신의 솔루션 "진짜"와일드 카드 '*'와 같은 와일드 카드 문자를 사용한 매칭은 작동하지 않습니다. "P32 *"는 "P32Whatever"와 일치하지 않지만 "P4552"는 "HelloP4552World"와 일치합니다. 그래도 더 나은 해결책에 대해 생각 ...;) – Spontifixus
나는 단순함을 위해서 그것을 지켰지 만 되돌아 보면 나는 무엇인가를 채찍질해야했다. 다행히도 필자는 입력 내용이 항상 'P'이고 그 다음 4 자리라는 가정을 할 수 있습니다. – user1384831