2

我有下面这两种方法。一个返回基于手机 ID 的制造商列表,另一个返回基于手机 ID 的手机列表(通过手机 ID 建立关系)。我如何将它们组合起来以返回一个带有组合制造商手机值的选择列表?(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

以下代码应该可以工作。它对您的两个列表执行内部连接,然后将每条记录的制造商名称和手机名称连接起来,中间有一个空格。

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

如果这是来自数据库,您应该连接两个字段(制造商和手机)。

在 linqtosql 中是这样的:

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

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

于 2009-07-29T14:53:04.870 回答