2014-09-23 2 views
1

모든 단어의 마지막 문자를 대문자로 사용해야합니다.람다 식을 대리자 형식 'System.Func <char,bool>'으로 변환 할 수 없습니다.

입력 :이 흐름을 통해 스택되어

출력 : 이것은 스택을 통해 흐름

나는 다음과 같은 코드를 달성하기 위해 노력했다 :

return String.Join(" ", s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(c => c.Last((s1 => Char.ToUpper(s1))))); 

그러나 그것을 컴파일되지 않습니다.

나는 문에이 오류가 Char.ToUpper(s1)

오류 1 :

암시 적으로 '부울'

오류 2 유형 '숯불'로 변환 할 수 없습니다 :

블록 의 반환 형식 중 일부는 대리자 반환 형식이 약

+4

여기서 '마지막'은 선택적으로 * 술어를 취합니다. 그것은 "{이} 필터와 일치하는 마지막 것"입니다. "마지막으로 {이}하십시오"하지 마십시오. –

+0

@MarcGravell 설명해 주셔서 감사합니다. – Shaharyar

답변

5

무엇을 암시 적으로 변환하지 않기 때문에 유형 'System.Func을'위임 람다 식을 변환 할 수 없습니다?

var result = String.Join(" ", s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) 
      .Select(c => c.Substring(0, c.Length - 1) + char.ToUpper(c.Last()))); 

단어의 전체 하위 문자열을 가져와 마지막 문자 만 변경합니다.

+0

문제가 해결되었습니다! 실제 문제가 무엇인지 조금 설명해 주시겠습니까? 나는 그 오류를 이해할 수 없었다. – Shaharyar

+0

몇 가지가 있었는데, 가장 중요한 것은 '마지막'의 잘못된 사용이었습니다. 그 결과로 변환 등의 주요 문제가 발생했습니다. 마지막 호출만으로 마지막 문자 만있는 문자열이 생겼으므로 첫 번째 부분도 하위 문자열로 가져와야했습니다. –

+0

나는 그것을 얻었다. 'Last'는'Conditional Statement'를 취합니다. 얼마나 어리석은 지요? – Shaharyar

관련 문제