web-dev-qa-db-fra.com

Utiliser Linq pour faire un Contient avec plusieurs valeurs

J'ai une table de médicaments dans laquelle je cherche certains noms de médicaments, mais je dois rechercher plusieurs noms. Voici où je suis actuellement avec elle.

string[] names = new string[2];
names[0] = "apixaban";
names[1] = "desirudin";

var meds = (from m in Medications where names.Any(m.BrandName.Contains) || names.Any(m.GenericName.Contains) select m);

Ce que j'ai ne fonctionne pas et je suis actuellement coincé. Je sais que je suis proche, mais je n'arrive pas à comprendre ce qui ne va pas.

MODIFIER

Pour plus de précision, si le nom que je recherche est désirable, alors le nom de marque ou le nom générique sera plus long, je dois donc avoir le contenu dans le champ de la base de données.

EDIT 2 Voici l'erreur que je reçois.

Unsupported overload used for query operator 'Any'.

Voici ce que j'ai finalement fini avec

var meds = (from m in db.AdmissionMedications where 
(names.Any(n => m.BrandName.Contains(n)) || names.Any(n => m.GenericName.Contains(n))
) select m);
11
Jhorra

Peut-être quelque chose comme

C # Linq:

var meds = (from m in Medications 
            where names.Any(name => name.Equals(m.BrandName) || m.GenericName.Contains(name)) 
            select m);

Méthodes d'extension:

List<Medication> meds = Medications
    .Where( med =>
        names.Any( name =>
            name.Equals( med.BrandName ) || med.GenericName.Contains( name )
        )
    )
    .ToList();
23
sa_ddam213

Je pense que tu veux essayer:

var query = Medications.Where(m => names.Contains(m.BrandName) || names.Contains(m.GenericName));
2
chead23

Il suffit de faire une jointure entre la table des médicaments et le tableau de noms.

var query = from m in Medications
            from n in in names
            where m.BrandNames.Any(bn => bn.Contains(n)) || m.GenericNames.Any(gn => gn.Contains(n))
            select m;
1
var x = (from c in Reports where c.HKPlanningQty == xi select c).Select(u=>new {Style=u.Style,QTN=u.HKPlanningQty}).OrderBy(u =>u.Style ).Where(v=>v.Style.Contains("44")||v.Style.Contains("58"));
0
Bodhi China

Si j'ai bien compris votre droit:

var meds = Medications.Where(m => names.Contains(m.BrandName) || names.Contains(m.GenericName));
0
aush