나는 프로젝트에서 일하고 있는데, 각 지역에서 오는 많은 양의 데이터가있을 수 있다고 들었습니다. 일단 우리가 살면 응용 프로그램이 느려질 수 있다는 걱정입니다. 결과적으로 QA 팀에 부하 테스트를 요청했습니다. 관리자는 그들이 할 수있는 도구 및/또는 자원이 없기 때문에 아니오라고 말했습니다. 코드를 최적화하기 위해 할 수있는 것에 대한 피드백을 받고 싶습니다.Loading 및 필터링 Linq를 사용하여 엄청난 양의 데이터
if 문을 고유 한 메서드로 옮기려고 생각하고 있으므로이 영역을 통과하는 switch case에서 호출 할 수 있습니다. 그런 다음 if 문에서 LINQ to 메서드 구문을 사용하여 식을 전달합니다. 대신 regionOrder.Where, 그것은 db.orders.where는 (검색 환경 설정 (들)에 따라 이름, 위치, 날짜를 통과 할 것이다.
이List<order> result = null;
List<order> regionOrder = null;
switch (region)
{
case "NorthEast":
regionOrder = db.orders.Where(x => x.Name == region).ToList();
break;
case "SouthEast":
regionOrder = db.orders.Where(x => x.Name == region).ToList();
break;
}
if (order.Name.IsNotNull() && order.Location.IsNotNull() && order.DateOrdered != null)
{
result = regionorder.Where(x => x.Name == order.Name && x.Location == order.Location && x.DateOrdered == order.DateOrdered);
}
else if (order.Name.IsNotNull() && order.Location.IsNotNull())
{
result = regionOrder.Where(x => x.Name == order.Name && x.Location == order.Location);
} else if (order.Name.IsNotNull() && order.DateOrdered != null)
{
result = regionOrder.Where(x => x.Name == order.Name && x.DateOrdered == order.DateOrdered);
} else if (order.Location.IsNotNull() && order.DateOrdered != null)
{
result = regionOrder.Where(x => x.Location == order.Location && x.DateOrdered == order.DateOrdered);
} else if (order.Name.IsNotNull())
{
result = regionOrder.Where(x => x.Name == order.Name);
}
else if (order.Location.IsNotNull())
{
result = regionOrder.Where(x => x.Location == order.Location);
}
else if (order.DateOrdered != null)
{
result = regionOrder.Where(x => x.DateOrdered == order.DateOrdered);
}
데이터가 메모리에 구체화되지 않도록 쿼리에서 제거'.ToList()'(그러나 모두'의 경우'문 그래서 당신이 그와 함께 일을하려고 무엇인지 분명하지 동일) –
그리고 모든 if (order.Name.IsNotNull()) {result = regionOrder.Where (x => x.Name == order.Name); 3 개의 if 문이 필요합니다. }; if (order.Location.IsNotNull()) {....}; if (order.DateOrdered! = null) {...};'result'는'IEnumerable'입니다. –
예, 변경하겠습니다. 나는 지역을 하드 코딩했다. 그런 다음 드롭 다운에서 영역을 선택하는 매개 변수를 추가했습니다. –