Using Linq to do a Contains with multiple values
c#, contains, linq
Solution
Maybe somthing like
C# Linq:
var meds = (from m in Medications
where names.Any(name => name.Equals(m.BrandName) || m.GenericName.Contains(name))
select m);
Extension methods:
List<Medication> meds = Medications
.Where( med =>
names.Any( name =>
name.Equals( med.BrandName ) || med.GenericName.Contains( name )
)
)
.ToList();
Problem
I have a medication table that I'm looking for certain drug names, but I need to search for multiple names. Here is where I currently am with it. ``` 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); ``` What I have isn't working, and I'm currently stuck. I know I'm close, but I can't quite figure out what's wrong. EDIT For clarification, if the name I'm searching for is desirudin, then the BrandName or Generic name will be longer, so I have to have the contains on the field in the database. EDIT 2 Here is the error I recieve. ``` Unsupported overload used for query operator 'Any'. ``` Here is what I finally ended up with ``` var meds = (from m in db.AdmissionMedications where (names.Any(n => m.BrandName.Contains(n)) || names.Any(n => m.GenericName.Contains(n)) ) select m); ```