C# 我如何返回“返回”;“文本”;从SelectListItem从SelectList中选择相应的int;价值观;?

C# 我如何返回“返回”;“文本”;从SelectListItem从SelectList中选择相应的int;价值观;?,c#,asp.net-mvc,asp.net-mvc-3,http-post,selectlist,C#,Asp.net Mvc,Asp.net Mvc 3,Http Post,Selectlist,我有一个选择列表,看起来像 new SelectList(new[] { new { Value = "1", Text = "AK" }, new { Value = "2", Text = "AL" }, new { Value = "3", Text = "AR" }, new { Value = "4", Text = "AZ" }, etc. . . 给定一个int,我需要能够选择相应的值,以便

我有一个
选择列表
,看起来像

new SelectList(new[]
    {
        new { Value = "1", Text = "AK" },
        new { Value = "2", Text = "AL" },
        new { Value = "3", Text = "AR" },
        new { Value = "4", Text = "AZ" },
        etc. . . 
给定一个int,我需要能够选择相应的
,以便返回相关的
文本
。所以如果我有int 3,我想最终返回字符串“AR”——我该怎么做

我似乎不明白SelectList是如何工作的,我一直在尝试以下方法:

var stringValue = mySelectList.Where(m => m.Value == myInt).Text;  
--这不起作用的原因有两个:

  • .文本不是我可以放在请求末尾的内容,因为它无法解决
  • m.Value-myInt
    告诉我
    我无法将源类型“int”转换为目标类型“string”
    ,如果我将int更改为字符串,则会出现错误:
    无法将表达式类型“string”转换为返回类型“bool”

我觉得我把事情搞得太复杂了。我哪里出错了?

您可能需要这样的东西:

var stringValue = mySelectList.Where(m => m.Value == myInt.ToString())
                              .First()
                              .Text; 
  • 方法不返回SelectListItem,而是返回查询。您需要使用
    first()
    方法强制执行查询并获得第一个结果
  • 您使用的是
    =
    (赋值)而不是
    =
    (比较两个值)

    • 您可能需要这样的东西:

      var stringValue = mySelectList.Where(m => m.Value == myInt.ToString())
                                    .First()
                                    .Text; 
      
      • 方法不返回SelectListItem,而是返回查询。您需要使用
        first()
        方法强制执行查询并获得第一个结果
      • 您使用的是
        =
        (赋值)而不是
        =
        (比较两个值)
        • 这样做

           mySelectList.First(m => m.Value == myInt.ToString()).Text
          
          这样做

           mySelectList.First(m => m.Value == myInt.ToString()).Text
          

          你也可以用这样的东西

              var stringValue = mySelectList.Find(match => match.Value == myInt.ToString()).Text;
          
          因为Find返回在列表中找到的第一个匹配项

          另一件事是代码不起作用,因为在比较中只键入了一个“=”,它应该是“=” 你的:

          就像它应该是:

          mySelectList.Where(m => m.Value == myInt).Text
          

          你也可以用这样的东西

              var stringValue = mySelectList.Find(match => match.Value == myInt.ToString()).Text;
          
          因为Find返回在列表中找到的第一个匹配项

          另一件事是代码不起作用,因为在比较中只键入了一个“=”,它应该是“=” 你的:

          就像它应该是:

          mySelectList.Where(m => m.Value == myInt).Text
          

          …或者用First替换Where。小心使用First()。如果找不到行,它将引发异常。您应该考虑使用FrStReDebug(),并检查在这个链接查询之后是否为空。编辑-或简单地将其包装在一个try catch中……或用First替换Where。只需小心使用First()。如果找不到行,它将引发异常。您应该考虑使用FrStReDebug(),并检查在这个链接查询之后是否为空。编辑-或简单地将其包装在一个try catch中…这仍然使用
          =
          而不是
          =
          。这仍然使用
          =
          而不是
          =