이것은 최대 4 명이 회사 인트라넷에서 사용하는 작은 응용 프로그램이며 C # 및 .NET을 처음 사용하기 때문에 솔루션이 웅장 할 필요는 없습니다.
사용자가 검색 할 범주 (예 : 응용 프로그램 이름 또는 관리자)를 선택한 다음 그에 따라 결과를 필터링 할 수있는 텍스트 상자를 선택할 수있는 간단한 .NET CRUD 앱에 대한 검색 필드를 만들려고합니다. 분야 명. 드롭 다운 메뉴의 항목은 클래스 필드 구성원이며 모든 항목을 검색 할 수 있기를 바랍니다. 런타임에 열 이름을 전달할 수 있도록 Dynamic Linq Library 를 사용하여 문자열을 만들지 만 어떤 이유로 든 쿼리가 결과를 반환하지 않습니다.
여기 내 현재 검색어입니다
dr_details = dr_details.Where("@0 == @1",searchType, searchString);
예를 들어 searchType 및 searchString은 쿼리 문자열에서 값을 가져옵니다 (각각 "Manager"및 "Joe"라고 함). 쿼리를 다음과 같이 대체해야합니다.
dr_details = dr_details.Where("Manager == Joe");
이것은 나에게 결과를주지 않습니다. 그러나 문자열 "Manager == Joe"
를 하드 코딩하면 쿼리에 정상적으로 실행됩니다.
어떤 제안? 이 문제는 머리가 충분히 길면 머리를 잡아 당길 것입니다! :피
원하지 않는 경우 동적 linq를 사용할 필요는 없습니다.
다음과 같이 해보십시오 :
var query = myList.AsQueryable();
switch(searchType)
{
case "Manger":
query = query.where(x=> x.Manager == searchString);
break;
case "....":
break;
default:
// No search type match in string... an exception? your call
break;
}
쿼리가 진행됨에 따라 "빌드"하기 때문에 더 직관적입니다 ...
편집하다:
그것이 너무 고통 스럽다면 이 게시물을 따라 보십시오.