다음과 같이 일부 문자열이 "일치"하는지 여부를 결정하는 특별한 방법이 있습니다.엔티티와 도우미 메서드에 LINQ를 사용하는 동안 DRY 상태를 유지하는 방법?
public bool stringsMatch(string searchFor, string searchIn)
{
if (string.IsNullOrEmpty(searchFor))
{
return true;
}
return searchIn != null &&
(searchIn.Trim().ToLower().StartsWith(searchFor.Trim().ToLower()) ||
searchIn.Contains(" " + searchFor));
}
Linq To Entities 및이 도우미를 사용하여 데이터베이스에서 일치 항목을 가져 오려고합니다. 그러나 내가 이것을 시도 할 때 :
IQueryable<Blah> blahs = query.Where(b => stringsMatch(searchText, b.Name);
"엔티티에 엔티티가 인식하지 못한다 ..."
다음과 같이 코드를 다시 작성하면 :
IQueryable<Blah> blahs = query.Where(b =>
string.IsNullOrEmpty(searchText) ||
(b.Name != null &&
(b.Name.Trim().ToLower().StartsWith(searchText.Trim().ToLower()) ||
b.Name.Contains(" " + searchText)));
논리적으로 동등하다면 문제는 해결됩니다. 문제는 코드가 읽기 쉽지 않기 때문에 일치시키려는 다른 엔티티마다 코드를 다시 써야한다는 것입니다.
this one과 같은 질문에서 말할 수있는 한, 지금은 할 수없는 일은 불가능합니다. 그러나 나는 뭔가를 놓치기를 바라고 있습니까?
try [Predicate Builder] (http://www.albahari.com/nutshell/predicatebuilder.aspx) – Eranga