2013-03-05 4 views
9

私は薬物名を探していますが、複数の名前を検索する必要があります。ここでは、私は現在それと一緒です。Linqを使用して複数の値が含まれています

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

、私はデシルジンさを探してる名前は、その後、新しい名称または一般名が長くなりますので、私は、データベース内のフィールドに含まれていなければならない場合。

EDIT 2 これは私が受け取るエラーです。

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

使用すると、1つを取得する場合、エラーメッセージを投稿し、またはそれはあなたがでラムダを使用する必要が –

+0

結果を返さずに実行しているという事実してください私の答えのような 'Any()'メソッドです。 –

答えて

17

たぶん

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

より明確にするために質問を更新しました。 – Jhorra

+0

@Jhorra、あなたのクエリはうまくいくようです。いくつかのサンプルデータを提供できますか?そして、正確にあなたの質問を扱っていないのは何ですか? – aush

+0

私はあなたが必要と思うもので私の答えを更新しました –

0

になってしまったものです投薬表と名前配列の間で結合します。

私はあなたが試してみたいと思います
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; 
+0

より明確にするために質問を更新しました。 – Jhorra

0

のような気にいらちょうど行います。ここでは

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

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")); 
関連する問題