j'ai un problème avec LINQ, je vais vous expliquer sur exemple:LINQ à l'entité Contient() et les requêtes imbriquées
j'ai une table de base de données appelée employé qui a FirstName et colonnes LastName, et une méthode pour les employés de la recherche qui obtient une liste de nameList comme argument, les éléments de cette liste sont des noms formatés comme celui-ci « Fred Graver » ou cela1 « Grim Reaper », déjà tryed ces approches sans chance = [
//just all employees
var allData = from emp in Context.Employee select emp;
var test1 = from emp in allData
where(emp.FirstName + " " + emp.LastName).Contains
("" + ((from n in nameList select n).FirstOrDefault()))
select emp;
var test2 = (from emp in allData
where (emp.FirstName + " " + emp.LastName)
== ((from n in nameList select n).FirstOrDefault())
select emp);
var test3 = from emp in allData
where (from n in nameList select n).Contains
(emp.FirstName + " " + emp.LastName)
select emp;
Les première et deuxième requêtes donnent: {"Impossible de créer une valeur constante de type 'Type de fermeture'. Seuls les types primitifs ('suc et h comme Int32, String et Guid ') sont pris en charge dans ce contexte. "} exception
et troisième: {" LINQ to Entities ne reconnaît pas la méthode' Boolean Contient [String] (System.Collections.Generic.IEnumerable`1 [System.String], System.String) » méthode, et cette méthode ne peut pas être traduit en une expression de magasin."}
serait heureux d'entendre vos suggestions :)
Thank you!
p.s.
Oui, je sais qu'il est possible de diviser les noms dans la liste et de les comparer séparément, mais toujours curieux de savoir pourquoi ces requêtes fonctionnent.