모두 C# 공급 업체에 Name 속성이있는 목록이 있습니다. 사용자가 이름을 검색하여 해당 목록을 필터링 할 수있게하려고합니다. 필터 문자열은 부분 일치 또는 완전한 일치 일 수 있습니다. 그러나 결과 목록에 정확한 일치가 포함 된 경우 목록의 부분 일치가 모두있는 목록의 위치가 0이어야합니다.목록에서 특정 요소가있는 목록의 하위 집합을 먼저 선택하십시오.
linq 및 lambdas를 사용하면 하위 목록을 쉽게 얻을 수 있지만 정확하게 일치하는 항목이 있으면 추가 한 다음 두 번째 목록을 만들지 않고 나머지 목록을 추가해야 할 필요가 있습니다. 정확한 것. 그것은 우아하지 않다. 더 쉬운 방법이 있습니까? (이 컴파일되지 않을 수도 있습니다 메모리에서 수행) 내 현재 코드 :
List<Vendor> temp = vendors.Where(v => v.Name.ToUpper().Contains(vendorNameSearch)).ToList();
Vendor exactMatch = vendors.Single(v => v.Name.ToUpper().Equals(vendorNameSearch));
if(null == exactMatch){return temp;}
else
{
List<Vendor> temp1 = new List<Vendor>();
temp1.Add(exactMatch);
temp1.AddRange(temp.Remove(exactMatch));
return temp1;
}