2009-07-29 68 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, 
          }); 

然后,您可以使用该结果来填补你的选择列表的