J'ai une requête LINQ dirigée contre un objet Entity Framework. Voici un résumé de la requête:LINQ to Entity: using Contient dans la partie "select" renvoie une erreur inattendue
//a list of my allies
List<int> allianceMembers = new List<int>() { 1,5,10 };
//query for fleets in my area, including any allies (and mark them as such)
var fleets = from af in FleetSource
select new Fleet
{
fleetID = af.fleetID,
fleetName = af.fleetName,
isAllied = (allianceMembers.Contains(af.userID) ? true : false)
};
Fondamentalement, ce que je fais est d'obtenir un ensemble de flottes. La liste allianceMembers contient des INT de tous les utilisateurs qui sont alliés avec moi. Je veux définir isAllied = true si le propriétaire de la flotte fait partie de cette liste, et false sinon.
Quand je fais cela, je vois une exception: « LINQ to Entities ne reconnaît pas la méthode « Boolean Contient (Int32) » méthode »
Je comprends obtenir cette erreur si je l'avais utilisé le contient en la partie où de la requête, mais pourquoi l'obtenir dans le select? À ce stade, je suppose que la requête aurait été exécutée et renvoyé les résultats. Ce petit morceau de code ne fait rien pour contraindre mes données du tout.
Des conseils sur la façon dont je peux accomplir ce dont j'ai besoin pour définir le drapeau isAllied?
Merci
Il convient de noter que 'Contains' * sera * pris en charge dans la prochaine version d'Entity Framework –