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更改为字符串,则会出现错误:我无法将源类型“int”转换为目标类型“string”
无法将表达式类型“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中…这仍然使用
=
而不是=
。这仍然使用=
而不是=
。