2

以下の2つの方法があります。1 つはハンドセット ID に基づいてメーカーのリストを返し、もう 1 つはハンドセット ID (ハンドセット ID による関係) に基づいてハンドセットのリストを返します。それらを組み合わせて、メーカーの携帯電話の値を組み合わせた 1 つの選択リストを返すにはどうすればよいですか? (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);
}

助けていただければ幸いです。

敬具

4

2 に答える 2

2

次のコードは機能するはずです。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);
于 2009-07-29T15:08:19.773 に答える
1

これがデータベースからのものである場合は、両方のフィールド(ManufacturerとHandset)を連結する必要があります。

linqtosqlでは、これは次のようになります。

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

その後、結果を使用して選択リストに入力できます

于 2009-07-29T14:53:04.870 に答える