확인란 및 라디오 버튼의 사이드 바 검색 탐색 필터를 작성하려고합니다. 데이터베이스에서 값을 가져옵니다. 다음과 같은 항목이 있지만 총 12 개의 필터 카테고리가 있습니다.큰 데이터 세트를 작은 그룹으로 나누기
아래 코드와 같은 것을 사용하면 저에게 효과적입니다. 그러나 하위 범주 각각에 대한 데이터베이스 호출을 정말 비효율적 인 것 같다
public ActionResult Index()
{
SearchBarViewModel model = new SearchBarViewModel();
model.Color = GetValuesFromDb();
model.Size = GetValuesFromDb();
model.Shape = GetValuesFromDb();
return View(model)
}
나는 하나의 데이터베이스 쿼리를 만드는 큰 데이터 집합을 반환하여이 작업을 수행 할 수있는보다 효율적인 방법이 추측하고있어 그 모든 범주 값을 포함하고 그들을 linq 그룹으로 분할? 어떻게 할 지 모르겠다.
데이터베이스 스키마 *
SearchKey SearchValue
--------- -----------------
Id Name Id KeyId Value
--------- -----------------
1 Color 1 1 Red
2 Size 2 1 Green
3 Shape 3 1 Blue
4 2 Small
5 2 Medium
6 2 Large
SQL 쿼리
SELECT sv.Id, sv.Value
FROM SearchKey sk
JOIN SearchValue sv ON sv.KeyId = sk.Id
WHERE sk.Name = @ValuePassedToSP
은 GroupBy https://msdn.microsoft.com/en-us/library/system.linq.enumerable.groupby(v=vs.110).aspx 을 사용할 수 있지만 모든 가능한 솔루션은 테이블이 어떻게 당신은 –
과 같은 질의를하고 있습니다.'Color','Shape', 그리고'Size'가 모두 같은 데이터베이스 테이블에 있다면 ... 당신은 데이터베이스에 1 번의 호출을 할 수 있습니다 .. 모든 레코드를리스트에 저장하십시오. 그 목록을 레코드 유형에 따라 필터링하십시오. 너를 원해. –
'GetValuesFromDb()'메소드를 게시 할 수 있습니까? –