none
linq to entities ne reconnaît pas la méthode « boolean contains[string] RRS feed

  • Question

  • bonjour,

    je me retrouve a nouveau avec ce message d'erreur :

    linq to entities ne reconnaît pas la méthode « boolean contains[string](system.linq.iqueryable`1[system.string], system.string) », et cette dernière ne peut pas être traduite en expression de magasin.

    voila mon code :

    List<string> RubRef = (from rub in ctx.RUBRIQUES where rub.CODNIVEAU == "r" select rub.CODRUBRIQUE).ToList<string>();

    var rubrique = (from rubriques in ctx.RUBRIQUES join societe in ctx.SOCIETE on rubriques.IDSOCIETE equals societe.IDSOCIETE where rubriques.DATFINVALIDITE > Datefin && (rubriques.CODNIVEAU == "s" || rubriques.CODNIVEAU == "e") && RubRef.Contains(rubriques.CODRUBRIQUE) orderby societe.CODSOCIETE select new {

    societe.CODSOCIETE, rubriques }).Distinct(); foreach (var item in rubrique) { identif.Add(item.rubriques.IDENTIF.ToString()); idsociete.Add(item.rubriques.IDSOCIETE.ToString()); codetab.Add(item.rubriques.CODETAB.ToString()); codrubrique.Add(item.rubriques.CODRUBRIQUE.ToString()); //... }


    l'erreur se produit sur le Foreach.

    pour une demande similaire, on m'avait donné cette solution pour chercher une info dans une table qui n'est pas présente dans une autre table :

    var listcentre = ctx.CENTRESURSSAF.Where(centre => ctx.CENTRESCOTISATIONS.Any(cot => cot.CODURSSAF == centre.CODURSSAF) == false);

    mais ici je travaille dans une seul table et j'ai du mal et en faire une expression lamba.

    est-ce que quelqu'un aurait une idée?


    "Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF

    mercredi 24 avril 2013 12:12

Réponses

Toutes les réponses

  • j'ai testé la solution ci dessous mais c'est toujours pareil :

    var listeRubrique = ctx.RUBRIQUES.Where(x => RubRef.Contains(x.CODRUBRIQUE));

    mais c'est toujours, Linq To entity ne veut pas du Contains...


    "Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF

    mercredi 24 avril 2013 12:44
  • pour info, le Contains fonctionne avec un FrameWorks 4 mais je suis en 3.5 et je ne peux pas passer en 4...

    "Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF

    mercredi 24 avril 2013 13:22
  • Bonjour,

    Vous n'aurez pas le choix que de faire des "OR" successifs.
    Regardez le post suivant :

    http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/095745fe-dcf0-4142-b684-b7e4a1ab59f0/

    Il contient le code d'une méthode permettant de faire des concaténation de "OR" avec Entity Framework 3.5.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 24 avril 2013 22:29
    Modérateur
  • merci pour la réponse.

    en effet, ce n'est pas le top... vive EF 3.5 !!


    "Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF

    jeudi 25 avril 2013 07:39