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

내가 갖고있는 것이 작동하지 않고 현재 막혀 있습니다. 나는 가깝다는 것을 알고 있지만, 나는 무엇이 잘못되었는지를 알 수 없다. 대한 명확한

편집

, 내가 desirudin됩니다 찾고 있어요 이름이, 다음 한 brandname 또는 일반 이름이 더 길어질 수 있습니다, 그래서 나는 데이터베이스의 필드에 포함되어 있어야합니다.

수정 2 다음은 내가받은 오류입니다.

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

당신이 하나를 얻을 경우 오류 메시지를 게시하거나, 사실하시기 바랍니다가 결과를 반환하지 않고 실행되는 –

+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

으로 결국 무엇인가 medication 테이블과 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; 
+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")); 
관련 문제