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

私が持っているものは機能しておらず、現在行き詰まっています。私は近くにいることは知っていますが、何が悪いのか完全には理解できません。

編集

明確にするために、検索している名前がdesirudinの場合、BrandNameまたはGeneric名は長くなるため、データベースのフィールドにcontainsを含める必要があります。

編集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);
4

5 に答える 5

32

多分何かのような

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();
于 2013-03-05T22:54:21.450 に答える
2

私はあなたが試してみたいと思います:

var query = Medications.Where(m => names.Contains(m.BrandName) || names.Contains(m.GenericName));
于 2013-03-05T23:11:53.173 に答える
1

私があなたの権利を理解した場合:

var meds = Medications.Where(m => names.Contains(m.BrandName) || names.Contains(m.GenericName));
于 2013-03-05T22:53:44.727 に答える
1

投薬テーブルと名前配列を結合するだけです。

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;
于 2013-03-05T23:05:00.990 に答える
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"));
于 2016-05-08T04:25:40.537 に答える