0
나는 람다 식에 익숙하지 않고 하나의 엔티티 프레임 워크 쿼리를 나타내는 방법을 찾는 데 문제가 있습니다. 나는 또한 잘못 될 수 있으며, 내가 원하는 것을하기위한 더 좋은 방법이 있습니다. 이것이 사실이라면 저에게 알려주십시오. 제 시나리오는 부 이름, 고객 번호 또는 전화 번호를 검색하도록 선택할 수있는 고급 검색 화면입니다. 원한다면 1 이상으로 검색 할 수 있습니다. Entity Framework를 백엔드로 사용하고 리포지토리를 테이블에 설정했습니다. 아래는 내가람다 식 문제
Func<Parties, bool> exp;
exp = null;
if (vm.CustomerNumberCriteria != null)
{
custID = Convert.ToInt32(vm.CustomerNumberCriteria);
exp = o => o.ID == custID;
}
if (vm.NameCriteria != null)
exp += o => o.LastName.Contains(vm.NameCriteria) || o.FirstName.Contains(vm.NameCriteria) || o.MiddleName.Contains(vm.NameCriteria) || o.Designation.Contains(vm.NameCriteria);
if (vm.PhoneNumberCriteria != null)
exp += o => o.CentralPhoneNumbers.Any(child => child.PhoneNumber == vm.PhoneNumberCriteria);
//TODO set tempresults
tempresults = custs.All.Where(exp).ToList();
내 문제를 사용하려고하고있는 코드는이 같은이 치료에 보인다과 검색 조건의 일치하는 값이 있으면 내가 결과를 필요이다.
감사합니다.
'표현 : 당신은 식 트리를 구축 "또는"하고 싶은 경우
지금, 가장 간단한 방법은
PredicateBuilder
을 사용하는 것입니다 >>'맞지? – hvd@hvd : 예, 오타, 미안합니다. 결정된. –
anyoen의 경우이 답변을 보려면 LinqKit을 다운로드하여 PredicateBuilder를 얻어야합니다. Nuget을 통해하는 것은 아주 쉬웠습니다. 귀하의 솔루션은 저에게 큰 도움이되었습니다. 당신의 예제에서 내가 바꿔야 만했던 것은 당신이 Custs.All.Expandable이라고 말해야했던 마지막 라인에있었습니다. 나의 데이터가 엔티티 프레임 워크에서 왔기 때문에 어디에서 그런 생각이 들었습니까. –