2016-12-20 4 views
6
if (!string.IsNullOrEmpty(Queries["SurnameInitial"])) 
{ 
    var initials = Queries["SurnameInitial"].Split(',').ToList(); 
     filter.And(s => initials.Contains(s.Surname.ToArray()[0].ToString())); 
} 

는 방법 '선택 System.String ToString() 메소드를 인식하지 않는 예외를 엔티티검색 문자열

LINQ를 발생하고,이 방법은 변환 할 수없는 상점 표현.

어떻게 char 대 string을 일치시킬 수 있습니까?

+4

T-SQL로 변환 할 수 없기 때문에 Linq가 Entities를 인식하지 못했습니다. 더 읽기 http://stackoverflow.com/a/34061692/2946329 –

+0

토마스의 답변에서's.Surname.ToArray() [0]'은 (는) char입니다. Linq 네임 스페이스에는 IEnumerables ['Contains (char)'] (https://msdn.microsoft.com/en-us/library/bb352880(v=vs.110).aspx)의 확장이 포함되어 있습니다. 그게 쓸모있어? 또는'IndexOf (char)'를 사용하고'! = -1'을 테스트 할 수 있습니까? –

답변

8

대신 다음 s.Surname.First()을 사용할 수 있습니다 :이 Linq에 있기 때문에 엔티티에 발생

if (!string.IsNullOrEmpty(Queries["SurnameInitial"])) 
{ 
    var initials = Queries["SurnameInitial"].Split(','); 
     filter.And(s => initials.Contains(s.Surname.First())); 
} 

를 당신이 사용할 수있는 List<string> 상대하고 있기 때문에 char.ToString()

으로 무엇을 해야할지하지 않습니다

filter.And(s => initials.Any(x => x.Contains(s.Surname.First())); 
+0

어떻게 char과 string을 일치시킬 수 있습니까? –

+0

@ s.k.paul 무엇을 의미합니까? –

+0

이니셜은 List 이고 s.Surname.First()는 char을 반환합니다. 어떻게 비교할 수 있습니까? –

2

다음 코드는 내 problem-를 해결

var initials = Queries["SurnameInitial"].Split(',').ToList(); 
filter.And(s => initials.Contains(s.Surname.Substring(0, 1)));