MVC 5 웹 애플리케이션을 개발 중입니다. 사용자가 그리드의 체크 박스를 체크하고 데이터를 데이터베이스에 저장하는 화면이 있습니다. 지금 구현해야하는 것은 사용자가 화면으로 다시 이동하여 항목 중 하나를 선택 취소하고 계속 한 경우 데이터 제거입니다. 나는 확실하지 않다리스트에있는 값과 다른 값을 비교하는 것
IEnumerable<string> splitSelectedCars = model.SelectedCars
.Split(',')
.Select(sValue => sValue.Trim());
if (cars.Count > 0)
{
IEnumerable<string> savedCarsInDb = cars.Select(c => c.Id).ToList();
//var merged = splitSelectedCars.Union(savedCarsInDb ,)
//puesdo code - for each value in merged call service layer to remove
}
노동 조합을 사용하는 것이 가장 좋은 방법은에서 splitSelected 자동차 목록에있는 모든 값을 보려면 여기를 경우 아래로
그래서 내 컨트롤러의 코드는 지금까지 보인다 모델은 savedCarsInDb 목록에 없는데, 그렇다면 IEqualityComparer
은 어떻게 생겼을까요?
예제 목록은 처음으로 1,2,3,4가 모델로 전달되어 분리되어 DB에 저장됩니다. 사용자가 뒤로 탐색하여 ID 4를 선택하면 splitSelected는 1,2,3을 가지며 savedCarsInDb는 여전히 1,2,3,4를 가지므로 '4'를 찾은 다음 제거를 호출해야합니다.
감사 릭 -이 갈 줄 것이다 - 내가 추측 이미 D에있는 두 번째 자동차에 대해 Add가 호출되지 않도록하기 위해 비슷한 것을 사용할 수 있습니다. B (즉, 현재 - 사용자가 선택한 ID를 다시 탐색하면 db에 두 번 저장됩니다.) –
@Ctrl_Alt_Defeat 집합 논리가 특정 문제를 해결하는 방법입니다. HashSet (http://msdn.microsoft.com/en-us/library/bb359438(v=vs.110).aspx) 트릭을 수행합니다. –