Вероятно ще трябва да отстраните грешки в API и да посочите повече подробности, за да стесните причината. Виждам няколко неща:
var prestation = queryString.FirstOrDefault();
// Handle when prestation comes back #null. Is that valid?
var results = db.Partenaires.Where(p => p.PartenairePrestations.Any(pp => pp.Prestation.NomPrestation == prestation.Value))
// .ToList() // Avoid .ToList() here... Select the entity properties you need.
.Select(p => new PartenaireMapItem {
IdPartenaire = p.IdPartenaire,
FirstName = p.FirstName,
LastName = p.LastName,
// NomComplet = p.LastName.Substring(0,1).ToUpper() + ". " + p.FirstName, // Remove. Make this a computed property in your view model.
Type = p.Type,
// DureeMin = 50, // Can remove, can be a computed property.
Lat = p.Lat,
Lng = p.Lng,
ImageUrl = p.ImageUrl,
SeDeplace = p.SeDeplace, // Ok if a String/value.
ADomicile = p.ADomicile, // Ok if a String/value.
Notes = p.NoteClientPartenaires, // Ok if a String/value.
Prestations = p.PartenairePrestations.Select(y => y.Prestation.NomPrestation).ToList(); // Assuming this is retrieving the names of presentations. List<string>.
}).ToList();
return results;
Ранният .ToList() беше необходим, защото се опитвахте да изчислите стойности (NameComplet) в израза на Linq, които обикновено биха били подавани към EF, което вашият доставчик на DB няма да разбере. За ефективност изберете само картографирани свойства и вместо това променете всички изчислени стойности на свойства само за четене на вашия модел на изглед. (PartenaireMapItem)
private string _nomComplet = null;
public string NomComplet
{
get { return _nomComplet ?? (_nomComplet = LastName.Substring(0,1).ToUpper() + ". " + FirstName); }
}
Този пример буферира резултата, като се приема, че данните за името са само за четене. Ако собственото/фамилното име може да се актуализира, просто връщайте изчисленото име всеки път.
Другите свойства трябва да са наред, ако приемем, че SeDeclace/ADomicile са низови стойности, а не дъщерни обекти. Същото важи и за списъка с презентации. Списък с низове за имената на презентациите трябва да е наред.
Другата незначителна промяна, която направих, беше да извлека моделите на изгледа в променлива, която да проверя преди връщане. Това по-добре улеснява използването на точка на прекъсване за проверка на резултатите преди връщане. Оттук определете дали се връща някаква грешка от изчисляването на резултатите или нещо друго, като например сериализиране на получените модели на изглед обратно към клиента.