我有一个药物表,我正在寻找某些药物名称,但我需要搜索多个名称.这是我目前使用它的地方.
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);
Run Code Online (Sandbox Code Playgroud)
我有什么不工作,我现在卡住了.我知道我很亲密,但我无法弄清楚出了什么问题.
编辑
为了澄清,如果我正在搜索的名称是desirudin,那么BrandName或Generic名称将更长,所以我必须在数据库中的字段上包含.
编辑2 这是我收到的错误.
Unsupported overload used for query operator 'Any'.
Run Code Online (Sandbox Code Playgroud)
这就是我最终的结果
var meds = (from m in db.AdmissionMedications where
(names.Any(n => m.BrandName.Contains(n)) || names.Any(n => m.GenericName.Contains(n))
) select m);
Run Code Online (Sandbox Code Playgroud)
sa_*_*213 25
也许有点像
C#Linq:
var meds = (from m in Medications
where names.Any(name => name.Equals(m.BrandName) || m.GenericName.Contains(name))
select m);
Run Code Online (Sandbox Code Playgroud)
扩展方法:
List<Medication> meds = Medications
.Where( med =>
names.Any( name =>
name.Equals( med.BrandName ) || med.GenericName.Contains( name )
)
)
.ToList();
Run Code Online (Sandbox Code Playgroud)