2011-06-13 80 views
3

我運行的是以下幾點:如何執行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(); 

凡AnswerType看起來是這樣的:

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中提取文本?

回答

2

在你的代碼AnswerType.SingleOrDefault(s => s.Value == "2")將返回SelectedListItem實例,而不是string

如果你需要得到文本查詢將是:

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

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

這將返回錯誤「只有分配,來電,增量,遞減和新的對象表達式可以用作語句 – Jennifer82 2011-06-13 04:13:59

+0

@David H - 我複製/粘貼你的代碼與'AnswerType'和檢查。 'text'被賦予了'2 answers'字符串。 – 2011-06-13 04:16:14

+0

這可能是我使用AnswerType的方式。我會在我的問題中添加一些內容以表明這一點。 – Jennifer82 2011-06-13 04:18:06

1

試試這個:

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