LINQ to entities ne reconnaît pas la méthode " du Système.String[] Split(Char []) "méthode",

Je suis en train de mettre en œuvre une méthode où les mots-clés stockées dans la base de données pour une activité (séparées par une virgule) correspondent à la remise chaîne de caractères séparées par une virgule.

public List<TblActivities> SearchByMultipleKeyword(string keywords)
{
    string[] keyword = keywords.Split(',');
    var results  = (from a in Entities.TblActivities
                    where a.Keywords.Split(',').Any(p => keyword.Contains(p))
                    select a).ToList();
    return results;
}

J'obtiens l'erreur suivante :

LINQ to Entities does not recognize the method 'System.String[] Split(Char[])' method,
and this method cannot be translated into a store expression.
Le message d'erreur indique que vous ne pouvez pas utiliser les fonctions, qu'ils ne sont pas disponibles (Il n'existe pas de cartographie entre ces fonctions et TSQL) UNE meilleure option pourrait être d'utiliser le contexte.ExecuteStoreQuery où vous pouvez écrire le SQL vous-même
Avez-vous des questions connexes sur le côté droit? Un rapide coup d'œil suggère que vous allez trouver votre réponse assez rapidement...
Ne peut pas en désaccord avec vous. La bonne option est de normaliser la base de données de sorte que vous pouvez réellement utiliser SQL, et les indices et les statistiques de la table. Sinon, quel est le point de l'utilisation d'un SGBDR. Si vous voulez vraiment faire ce CSV gubbins, utiliser un schemaless base de données au lieu!
pas forcément vrai, nous ne connaissons pas le contexte de la colonne mots clés, il pourrait ne pas être normalizable, mais je suis d'accord, si elle a été normalisée, il serait mieux

OriginalL'auteur rikket | 2014-05-29