개체 목록을 검색하기위한 텍스트 상자가있는 웹 응용 프로그램을 만들고 있습니다.단일 문자열로 가장 빠른 개체 목록 검색
개체는 같다 :
public class Project : IDbProject
{
public string ProjectName { get; set; }
public string Country { get; set; }
public string Customer { get; set; }
public DateTime UploadDate { get; set; }
public DateTime CreateDate { get; set; }
public string CreatedBy { get; set; }
}
하고 목록은 IList<IProject>
이다. 내 검색/필터링 목록 물마루가는과 같은 객체의 각 문자열로 비교됩니다 : 당신이 볼 수 있듯이
public IList<IProject> GetSearchedProjects(string searchString)
{
foreach (var proj in _projects)
{
if (InputStartWithSearch(proj.ProjectName, searchString) && !searchProjects.Contains(proj))
{
searchProjects.Add(proj);
continue;
}
if (InputStartWithSearch(proj.Country, searchString) && !searchProjects.Contains(proj))
{
searchProjects.Add(proj);
continue;
}
if (InputStartWithSearch(proj.CreatedBy, searchString) && !searchProjects.Contains(proj))
{
searchProjects.Add(proj);
continue;
}
if (InputStartWithSearch(proj.ProjectState, searchString) && !searchProjects.Contains(proj))
{
searchProjects.Add(proj);
continue;
}
if (IsStringDate(searchString))
if (IsDatesEqual(proj.CreateDate, searchString) && !searchProjects.Contains(proj))
{
searchProjects.Add(proj);
}
}
return searchProjects;
}
return _projects;
}
, 나는 개체의로 검색 문자열을 확인합니다 개인 방법을 많이 만들었습니다 문자열/날짜/뭐든간에. 그리고 모두 잘 작동합니다.
하지만 하나의 문자열로 개체 목록을 검색하는 더 좋고/더 빠른 방법이 있습니까?
편집
InputStartWithSearch
및 IsStringDate
내가 입력 문자열이 프로젝트의 데이터로 시작하는지 확인 개인 방법입니다 방법. 따라서 CreatedBy가 "Matthi Smith Junior"이고 "Matthi Junior", "Matthi Smith", "Smith Junior"등을 검색하면 추가됩니다.
IsStringDate는 검색 문자열이 Datetime 형식과 같은지 확인합니다. 따라서 일련의 형식이 포함되어 있으며 검색 문자열이 해당 형식인지 확인하십시오.
- 지금이 당신이 실제로 있나요 성능 문제? * 간단한 * 코드를 먼저 집중하겠습니다. –
또한 InputStartWithSearch 및 DateToString은 무엇을합니까? 그리고'searchProjects'는 어디에서 왔습니까? foreach 루프 내에 return 문이있는 이유는 무엇입니까? 그것은 나에게 매우 잘못 보인다. 명확하고 정확한 코드를 먼저 얻는 데 중점을 둡니다. –
현재 약 30 개의 더미 개체 만 사용하고 있지만 데이터베이스에 연결될 때는 1000 개 이상의 개체가됩니다. 그래서 일하고 있지만, 누군가가 그것을 더 빨리 만들 수있는 방법을 볼 수 있다면, 그것이 지금 일어나고있을 때보 다 지금 그것을 바꾸는 것이 낫습니다. – Moelbeck