使用Linq做一个包含多个值的包含
本文关键字:包含多 包含 一个 使用 Linq | 更新日期: 2023-09-27 18:02:19
我有一个药物表,我正在查找某些药物名称,但是我需要搜索多个名称。这是我目前的情况。
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);
我所拥有的不起作用,我目前被卡住了。我知道我很接近了,但我不太明白是哪里出了问题。
编辑
为了澄清,如果我正在搜索的名称是可取的,那么品牌名称或通用名称将更长,所以我必须在数据库中的字段上包含。
编辑2 这是我收到的错误。
Unsupported overload used for query operator 'Any'.
这是我最后写的
var meds = (from m in db.AdmissionMedications where
(names.Any(n => m.BrandName.Contains(n)) || names.Any(n => m.GenericName.Contains(n))
) select m);
比如
c# Linq:var meds = (from m in Medications
where names.Any(name => name.Equals(m.BrandName) || m.GenericName.Contains(name))
select m);
扩展方法:
List<Medication> meds = Medications
.Where( med =>
names.Any( name =>
name.Equals( med.BrandName ) || med.GenericName.Contains( name )
)
)
.ToList();
我想你应该试试:
var query = Medications.Where(m => names.Contains(m.BrandName) || names.Contains(m.GenericName));
在药物表和names数组之间进行连接。
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 meds = Medications.Where(m => names.Contains(m.BrandName) || names.Contains(m.GenericName));
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"));