我看起来像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;
- 由于以下几个原因,这不起作用:
m.Value - myInt
告诉我I cannot convert the source type 'int' to target type 'string'
,如果我将int更改为字符串,则会收到错误:cannot convert expression type 'string' to return type 'bool'
。我觉得我在这里过于复杂。我哪里出错了?
答案 0 :(得分: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
答案 1 :(得分:1)
你可能需要这样的东西:
var stringValue = mySelectList.Where(m => m.Value == myInt.ToString())
.First()
.Text;
Where
方法不返回SelectListItem,它返回一个查询。您需要强制执行查询,并使用First()
方法获得第一个结果。=
(分配值)而不是==
(比较两个值)。答案 2 :(得分:1)
这样做;
mySelectList.First(m => m.Value == myInt.ToString()).Text
答案 3 :(得分:0)
var lst = mySelectList.Where(o=> o.Value ==myInt.ToString()).Select(o=> o.Text).First();