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 - myIntI 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 はリストで見つかった最初の一致を返すためです。

あなたのコードが機能していないもう1つのことは、比較で「=」を1つだけ入力したため、「==」のようになるはずです。

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

次のようになります。

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

これを行う;

 mySelectList.First(m => m.Value == myInt.ToString()).Text
于 2012-08-29T11:26:53.940 に答える
1

おそらく次のようなものが必要です。

var stringValue = mySelectList.Where(m => m.Value == myInt.ToString())
                              .First()
                              .Text; 
  • このWhereメソッドは SelectListItem を返さず、クエリを返します。メソッドを使用して、クエリを強制的に実行し、最初の結果を取得する必要がありますFirst()
  • (2つの値を比較する=)の代わりに(値を割り当てる)を使用しています。==
于 2012-08-29T11:26:36.013 に答える
0
var lst = mySelectList.Where(o=> o.Value ==myInt.ToString()).Select(o=> o.Text).First();
于 2012-08-29T11:49:52.133 に答える