2014-02-24 2 views
0

내가 %에게 와일드 카드를 내가 2 콤보에서 %를 제거하면 다음 코드가Linq에 엔티티에 와일드 카드 %

를 포함 할 것입니다 엔티티 문 및 조건 중 하나에 LINQ를 할 노력하고 있어요 상자 난 결과

var SLogged = from p in OEEEntity.Scrappages 
          where p.Date >= StartDate 
          where p.Date <= EndDate 
          where p.LogType.Contains(cmbType.Text) 
          where p.ScrapCode.Contains(cmbCode.Text) 
          orderby p.Date ascending 
          select p; 

은 %를 포함 할 값은 cmbType 및 cmbCode

사람이 내가이 작업을 수행 할 수있는 방법을 알고 있습니다 얻을.

+0

문자열에서 '%'을 (를) 제거하지 않는 이유는 무엇입니까? 'contains'를 사용하면'%'를 사용하는 SQL로 변환해야합니다. –

답변

2

.Contains("aaa")LIKE '%aaa%'

.StartsWith("aaa")에 해당하는 LIKE 'aaa%'

.EndsWith("aaa")에 해당하는 것은 그래서 당신은 수동으로 '%'를 추가 할 필요가 없습니다 LIKE '%aaa'

에 해당합니다.

+0

사용자가 콤보 상자의 항목에 의해 필터가 아닌 드롭 다운에서 %를 선택하면 무엇이 보이는지입니다. 거의 어디를 건너 뛰는 것처럼. – Inkey

+0

사용자가 무엇을 선택하고 어떤 쿼리를 수행하는지 항상 관리 할 수 ​​있습니다. –

0

부울 값을 반환하는 모든 문자열 작업 사용 : 영업 didn를하기 때문에 PatIndex

var SLogged = (from p in OEEEntity.Scrappages 
          where p.Date >= StartDate 
          && p.Date <= EndDate 
          && SqlFunctions.PatIndex(cmbType.Text, p.LogType) > 0 
          && SqlFunctions.PatIndex(cmbCode.Text,p.ScrapCode) > 0 
          orderby p.Date ascending 
          select p).ToList(); 
0

최선의 방법을, 실제로 OP에서 그의 문제를 묻지 않습니다.

var queryText = cmbType.Text; 
var SLogged = from p in OEEEntity.Scrappages 
         where p.Date >= StartDate 
         where p.Date <= EndDate 
         where p.LogType.Contains(queryText) 
           || string.IsNullOrEmpty(queryText) 
         where p.ScrapCode.Contains(queryText) 
           || string.IsNullOrEmpty(queryText) 
         orderby p.Date ascending 
         select p; 
0

이이 질문에 대답하지 않는 사용하는 와일드 카드 문자를 다루는

var myString = "This is some text"; 
myString.Contains("some");