Я предполагаю, что проблема в том, что вы хотите иметь доступ к коллекции либо по пользователю, либо по расположению.Одним из подходов может быть использование ILookup<>
классов.Вы начнете с коллекции «многие ко многим» и произведете поиск следующим образом:
var lookupByUser = userLocations.ToLookup(ul => ul.User);
var lookupByLocation = userLocations.ToLookup(ul => ul.Location);
Обновление:
В соответствии с вашим описанием кажется, что вына самом деле не нужно иметь полное отношение «многие ко многим» в вашей ViewModel.Скорее ваша ViewModel может иметь такую структуру:
public class YourViewModel
{
public IEnumerable<UserViewModel> Users { get; set; }
}
public class UserViewModel
{
// User-related stuff
public IEnumerable<LocationViewModel> Locations { get; set; }
}
Если вы хотите избежать избыточных LocationViewModel
объектов, вы можете предварительно построить отображение между объектами Model и ViewModel:
var locationViewModels = myLocations.ToDictionary(
loc => loc, loc => CreateLocationViewModel(loc));
А затем повторно используйте эти объекты при заполнении ViewModel вашей страницы.