2016-10-28 2 views
1

SQL 테이블에서 데이터를 가져 오는 linq 쿼리가 있습니다.
값 뒤에 공백으로 작성된 데이터베이스 값은
"Johny (및 그 이후 5 공백)"입니다. "Johny"(공백없이)를 찾으려고하면 쿼리가 작동하지 않습니다. 그러나 "Johny"(Johny - 5 스페이스 이후에, 그것은 거기에 보여주지 않았다)를 검색 할 때 - 작동합니다.
기지에서 뭔가를 변경할 수 없기 때문에 이에 대한 권한이 없었습니다.
공백없이 작동하게하려면 어떻게합니까? 내 쿼리 만 변경합니까?
내 코드 :공백으로 linq 검색을 수행하는 방법

var fidn = (repository.users.Join(repository.usersLG, 
            post => post.pcod ,  
            meta => meta.pcod, 
            (post, meta) => new { Post = post, Meta = meta }) 
          .Where(postAndMeta => postAndMeta.Post.fam_v == "Johny   ").ToList()) 
          .Select(x => new Final { 
           mcod = x.Post.mcod, 
           pcod = x.Post.pcod, 
           c_ogrn = x.Post.c_ogrn, 
           fam_v = x.Post.fam_v, 
           im_v = x.Post.im_v, 
           ot_v = x.Post.ot_v, 
           idGK = x.Meta.idGK }); 

ASP 닷넷 웹 페이지 C#을 엔티티 프레임 워크는

+0

당신은'fam_v.StartsWith ("Johny는")를'대신 사용할 수있는'==' – Nico

+1

필드가 고정 인 것 같은데 - 너비 문자 필드 (예 : 'CHAR (10)'). 이 경우 필드의 너비에 검색어를 덧붙이면됩니다. –

+1

@heinzbeinz 그것은 'JohnyBoy'와 맞지 않을 수도 있습니다. –

답변

3

사용 Trim : (는 또한이 경우 쿼리 구문을 변경하는 것은 고려, IMO 더 읽기 온다로는을 조인)

var fidn = from post in repository.users 
      join meta in repository.usersLG on post.pcod equals meta.pcod 
      where post.fam_v.Trim() == "Johny" 
      select new Final { 
       mcod = post.mcod, 
       pcod = post.pcod, 
       c_ogrn = post.c_ogrn, 
       fam_v = post.fam_v, 
       im_v = post.im_v, 
       ot_v = post.ot_v, 
       idGK = meta.idGK 
      }; 

끄트머리는의 속성의 이름 C# naming conventions를 보라 10 개체

+1

고마워요, –

4

사용 Trim 방법, 그것은 EF 지원하는 것 :

//... 
.Where(postAndMeta => postAndMeta.Post.fam_v.Trim() == "Johny") 
//... 
+0

처럼 작동합니다. 매력처럼 작동합니다. –

+0

잘 알고 있습니다;). 예, EF는 SQL의 표준 함수로 변환되는 일부 문자열 메서드를 지원합니다. 그러면 내 답변에서 인용 한 링크에서 찾을 수 있습니다. – octavioccl

+0

@octavioccl - 당신은 나와 함께 Trim()을 사용했습니다. 당신은 신용을받을 가치가 있습니다 –

관련 문제