0

我有一个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 我需要能够选择相应的Value,以便我可以返回关联的Text. 所以如果我有 int 3,我想最终返回字符串“AR”——我该怎么做?

我似乎不明白 SelectLists 是如何工作的,我一直在尝试类似的东西:

var stringValue = mySelectList.Where(m => m.Value == myInt).Text;  

-- 这不起作用有几个原因:

  • .Text 不是我可以放在请求末尾的东西,因为它无法解决
  • m.Value - myInt告诉我I cannot convert the source type 'int' to target type 'string',如果我将 int 更改为字符串,我会收到错误:cannot convert expression type 'string' to return type 'bool'

我觉得我在这里把事情复杂化了。我哪里做错了?

4

4 回答 4

2

你也可以使用这样的东西

    var stringValue = mySelectList.Find(match => match.Value == myInt.ToString()).Text;

由于 Find 返回列表中找到的第一个匹配项。

您的代码不起作用的另一件事是您在比较中只输入了一个“=”,它应该类似于“==”您的:

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

应该是这样的:

mySelectList.Where(m => m.Value == myInt).Text
于 2012-08-29T11:35:22.180 回答
1

你可能需要这样的东西:

var stringValue = mySelectList.Where(m => m.Value == myInt.ToString())
                              .First()
                              .Text; 
  • Where方法不返回 SelectListItem,它返回一个查询。您需要使用该方法强制执行查询,并获得第一个结果First()
  • 您正在使用=(分配一个值)而不是==(比较两个值)。
于 2012-08-29T11:26:36.013 回答
1

做这个;

 mySelectList.First(m => m.Value == myInt.ToString()).Text
于 2012-08-29T11:26:53.940 回答
0
var lst = mySelectList.Where(o=> o.Value ==myInt.ToString()).Select(o=> o.Text).First();
于 2012-08-29T11:49:52.133 回答