2011-06-13 4 views
3

나는 다음과 같은 실행하고 있습니다 : AnswerType은 다음과 같습니다LINQ 쿼리를 수행하고 선택하려면 어떻게합니까?

var abc = new adminModel(); 
string text = abc.AnswerType.SingleOrDefault(s => s.Value == "2"); 
string text0 = abc.AnswerType.Single(s => s.Value == "2").Text; 
var text1 = (from a in abc.AnswerType 
    here a.Value == "2" 
    select a.Text).SingleOrDefault(); 

:

public class adminModel 
{ 

    public IEnumerable<SelectListItem> AnswerType 
    { 
     get 
     { 
      return new[] 
       { 
        new SelectListItem { Value = "1", Text = "1 answer" }, 
        new SelectListItem { Value = "2", Text = "2 answers" }, 
        new SelectListItem { Value = "3", Text = "3 answers" }, 
        new SelectListItem { Value = "4", Text = "4 answers" }, 
        new SelectListItem { Value = "5", Text = "5 answers" }, 
        new SelectListItem { Value = "6", Text = "6 answers" }, 
        new SelectListItem { Value = "7", Text = "7 answers" }, 
       }; 
     } 
    } 

} 

하지만 "문자열로 SelectListItem을 변환 할 수 없습니다"없다는 오류 메시지를 받고 있습니다. SelectListItem에서 Text를 추출 할 수있는 방법이 있습니까?

답변

2

코드에서 AnswerType.SingleOrDefault(s => s.Value == "2")string이 아닌 SelectedListItem 인스턴스를 반환합니다. 텍스트를 얻을 필요가있는 경우

쿼리는 다음과 같습니다

string text = AnswerType.Single(s => s.Value == "2").Text; 

또는

string text = AnswerType 
    .Where(s => s.Value == "2") 
    .Select(arg => arg.Text) 
    .SingleOrDefault(); 
+0

이 오류 "에만 할당, 전화, 증가를 반환 , 감소 및 새로운 객체 표현을 문장으로 사용할 수 있습니다. – Jennifer82

+0

@David H - 코드를 AnswerType 및 확인했다. 'text'는'2 answers' 문자열로 지정되었습니다. –

+0

AnswerType을 사용하는 방법 일 수 있습니다. 나는 그것을 보여주기 위해 나의 질문에 무엇인가를 추가 할 것이다. – Jennifer82

1

이 시도 :

string text = AnswerType 
     .Where(s => s.Value == "2") 
     .Select(s=> s.Text) 
     .SingleOrDefault(); 
관련 문제