特定の薬名を探している薬のテーブルがありますが、複数の薬名を検索する必要があります。ここに私が現在いるところがあります。
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);
私が持っているものは機能していません、そして私は現在立ち往生しています。私は身近にいることは知っていますが、何が悪いのかよくわかりません。
[〜#〜] edit [〜#〜]
明確にするために、検索している名前がdesirudinである場合、BrandNameまたはGenericの名前はより長くなるため、データベースのフィールドに含まれている必要があります。
EDIT 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));
投薬テーブルと名前の配列を結合するだけです。
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"));
あなたの権利を理解した場合:
var meds = Medications.Where(m => names.Contains(m.BrandName) || names.Contains(m.GenericName));