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);
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();
Je pense que tu veux essayer:
var query = Medications.Where(m => names.Contains(m.BrandName) || names.Contains(m.GenericName));
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;
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"));
Si j'ai bien compris votre droit:
var meds = Medications.Where(m => names.Contains(m.BrandName) || names.Contains(m.GenericName));