2011-06-13 45 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();