2009-07-29 28 views
2

私は以下の2つの方法があります。一方はハンドセットIDに基づく製造業者のリストを返し、他方はハンドセットID(ハンドセットIDによる関係)に基づいてハンドセットのリストを返す。どのように組み合わせて、1つの選択リストを組み合わされたメーカーのハンドセット値で返すことができますか? (MVCに新しいビット)C#Asp.Net MVC - 選択リストの結合?

SelectList GetManufacturers() 
{ 
     var manufacturers = ((DataPage<Manufacturer>)ViewData["Manufacturers"]).Records; 
     return new SelectList(manufacturers, "ID", "Name", ViewData.Model.HandsetID != null ? ViewData.Model.HandsetID : -1); 
} 

SelectList GetHandsets() 
{ 
    var list = ((DataPage<Handset>)ViewData["Handsets"]).Records; 
    return new SelectList(list, "ID", "Name", ViewData.Model.HandsetID != null ? ViewData.Model.HandsetID : -1); 
} 

大歓迎ヘルプ、

種類が

+0

私は間違っている可能性がありますが、ビューデータを使用して機能間で物事をやりとりしているようです。もしそうなら、しないでください。 –

答えて

2

あなたのSelectListのを埋めるために、結果を使用することができます。 2つのリストの内部結合を実行し、各レコードの製造元名とハンドセット名をその間にスペースを入れて連結します。

var manufacturers = ((DataPage<Manufacturer>)ViewData["Manufacturers"]).Records; 
var handsets = ((DataPage<Handset>)ViewData["Handsets"]).Records; 

var list = 

    from manufacturer in manufacturers 
    join handset in handsets on manufacturer.HandsetID equals handset.HandsetID 
    select new 
    { 
     ID = handset.HandsetID, 
     Name = manufacturer.Name + " " + handset.Name 
    }; 
return new SelectList(list, "ID", "Name", ViewData.Model.HandsetID != null ? ViewData.Model.HandsetID : -1); 
1

に関しては、これはデータベースからのものである場合、あなたは両方のフィールド(メーカーおよびハンドセット)を連結する必要があります。 linqtosqlで

これはのようになります:

var result = (from foo in db.foos 
       select new { 
          ID = foo.ID 
          Name = foo.Manufacturer + " " + foo.Handheld, 
          }); 

あなたは、次のコードは動作するはずです

関連する問題