사내 응용 프로그램의 검색 페이지에 대해 LINQ 메서드가 있습니다. LastName
하여에만 검색으로 이것을 만들 때 틀림없이 볼 수있는 방법은 지금다양한 매개 변수가있는 LINQ 메서드
public static DataTable SearchForPerson(String FirstName, String MiddleName, String LastName, String SSN, DateTime? BirthDate)
{
var persons = (from person in context.tblPersons
where person.LastName == LastName || person.LastName.StartsWith(LastName)
join addresse in context.tblAddresses on person.PersonID equals addresse.PersonID
orderby person.LastName
select new { person.PersonID, person.LastName, person.FirstName, person.SSN, addresse.AddressLine1 });
var filteredPersonsList = persons.Where(p => p.LastName == LastName).ToList();
if (filteredPersonsList.Count == 0)
filteredPersonsList = persons.Where(p => p.LastName.StartsWith(LastName)).ToList();
var dataTable = filteredPersonsList.CopyLinqToDataTable();
return dataTable;
}
아래와 같이 보인다, 나는 약간의 감독을했다. 나는 이것이 적절하게 돌아 가지 않을지도 모른다는 것을 알게되었을 때 이것을 확장하는 과정에있었습니다.
결국, 내 질문에; 더 바람직합니까 (읽기 - 우수 사례,보다 효율적으로 ...) 메커니즘을 사용하여 이와 같은 단일 메서드를 사용하는 것입니다 (비어 있지 않은 매개 변수에 대한 스위치를 생각하고 있습니다.) 검색 할 매개 변수를 지정하십시오. 여러 버전을 만들거나해야합니까? SearchForPersonByLastName
& SearchForPersonBySSN
?
또한 이보다 더 매력적인 해결책이 있습니까? 저는 공통점이 있다고 생각합니까?
아니요 대부분 정확합니다. 내 유일한 관심사는 여러 매개 변수로 검색하고 더 많은 메소드를 사용하려는 경우의 경우입니다. 'SearchByFirstAndLastName()'?? –
제 편집을 참조하십시오. – jason