2009-07-29 80 views
2

我有以下兩種方法。一個基於手機ID返回製造商列表,另一個返回基於手機ID(通過手機ID的關係)的手機列表。我怎樣才能將他們結合起來,返回一個選擇列表與合併的製造商手機價值? (有點新的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

看來你是在視圖上做這件事(雖然我可能是錯的,你使用viewdata來傳遞函數之間的東西)。如果是這樣,不要。 – 2009-07-29 15:53:14

回答

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, 
          }); 

然後,您可以使用該結果來填補你的選擇列表的