2013-03-05 9 views
9

Ich habe eine Medikationstabelle, die ich nach bestimmten Droge Namen suche, aber ich muss nach mehreren Namen suchen. Hier bin ich gerade dabei.Verwenden von Linq zu tun, enthält mit mehreren Werten

Was ich habe, funktioniert nicht, und ich bin derzeit fest. Ich weiß, dass ich in der Nähe bin, aber ich kann nicht richtig herausfinden, was falsch ist.

EDIT

Zur Klarstellung, wenn der Name ich suche ist Desirudin, dann wird der Markenname oder Generic name länger sein, also muss ich haben die auf dem Feld in der Datenbank enthält.

EDIT 2 Hier ist der Fehler, den ich erhalte.

Unsupported overload used for query operator 'Any'. 

Hier ist, was ich schließlich mit

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

Bitte senden Sie die Fehlermeldung, wenn Sie eine oder die Tatsache erhalten, dass es läuft ergebnislos Rückkehr –

+0

Sie benötigen einen Lambda zu verwenden, in die 'Any()' Methode, wie in meiner Antwort. –

Antwort

17

Vielleicht wie

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

Ich habe meine Frage aktualisiert, um besser zu klären. – Jhorra

+0

@Jhorra, Ihre Anfrage scheint dann in Ordnung zu sein. Könnten Sie einige Beispieldaten bereitstellen? Und was genau funktioniert nicht mit Ihrer Anfrage? – aush

+0

Aktualisiert meine Antwort mit, was ich denke, Sie brauchen –

0

Wenn ich Ihr richtig verstanden habe gelandet:

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

Ich habe meine Frage aktualisiert, um besser zu klären. – Jhorra

0

einfach eine somthing Join zwischen der Medikationstabelle und dem Namen-Array.

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; 
2

Ich glaube, Sie versuchen wollen:

var query = Medications.Where(m => names.Contains(m.BrandName) || names.Contains(m.GenericName)); 
0
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"));