如何将List <anonymoustype#1>转换为List <model>?

时间:2017-06-25 05:36:54

标签: c#

在我的MVC应用程序中有4个模型类。

ProductModel.cs

public class ProductModel  
{  
    public int ProductID { get; set; }  
    public string ProductName { get; set; }  
    public int SupplierID { get; set; }  
    public int CategoryID { get; set; }  
}  

CategoriesModel.cs

public class CategoriesModel  
{  
    public int CategoryID { get; set; }  
    public string CategoryName { get; set; }  
    public string Description { get; set; }  
}  

SuppliersModel.cs

public class SuppliersModel  
{  
    public int SupplierID { get; set; }  
    public string CompanyName { get; set; }  
    public string ContactName { get; set; }  
    public string ContactTitle { get; set; }  
    public string Phone { get; set; }  
    public string City { get; set; }  
    public string Country { get; set; }  
}  

Products_Categories_SuppliersModel - 具有上述三个类中所有必需属性的类。

public class Products_Categories_SuppliersModel  
{  
    public string ProductName { get; set; }  
    public string ContactName { get; set; }  
    public string ContactTitle { get; set; }  
    public string CompanyName { get; set; }  
    public string Phone { get; set; }  
    public string City { get; set; }  
    public string Country { get; set; }  
    public string CategoryName { get; set; }  
    public string Description { get; set; }  
}  

我在List<ProductModel>List<CategoriesModel>List<SuppliersModel>中有数据。使用Linq加入所有三个列表。

 public List<Products_Categories_SuppliersModel> GetProduct_Category_SupplierData()  
{  
    try  
    {  
        List<ProductModel> prodData = GetProductsData().ToList();  
        List<CategoriesModel> categData = GetCategoriesData().ToList();  
        List<SuppliersModel> supplData = GetSuppliersData();  
        var DBData = (from p in prodData  
                     join c in categData  
                     on p.CategoryID equals c.CategoryID  
                     join s in supplData on p.SupplierID equals s.SupplierID  
                     select new  
                     {  
                         p.ProductName,  
                         c.CategoryName,  
                         c.Description,  
                         s.ContactName,  
                         s.ContactTitle,  
                         s.CompanyName,  
                         s.Phone,  
                         s.City,  
                         s.Country  
                     });  
        return DBData.ToList();  
    }  
    catch (Exception) { return null; }  
    finally {}  
}  

但第24行引发错误:

 Cannot implicitly convert type
 'System.Collections.Generic.List<AnonymousType#1>' to
 'System.Collections.Generic.List<MVCApp.Models.Products_Categories_SuppliersModel>'.

上述代码中的错误是什么?我创建了Products_Categories_SuppliersModel类,返回数据应为Products_Categories_SuppliersModel类型。

2 个答案:

答案 0 :(得分:4)

像这样编写你的选择语句

select new  MVCApp.Models.Products_Categories_SuppliersModel
{  
ProductName = p.ProductName,
CategoryName = c.CategoryName,
Description = c.Description,
ContactName = s.ContactName,
ContactTitle = s.ContactTitle,
CompanyName = s.CompanyName,
Phone = s.Phone,
City = s.City,
Country = s.Country };

答案 1 :(得分:2)

只需在您的选择中实例化Products_Categories_SuppliersModel

    var DBData = (from p in prodData  
                 join c in categData  
                 on p.CategoryID equals c.CategoryID  
                 join s in supplData on p.SupplierID equals s.SupplierID  
                 select new Products_Categories_SuppliersModel()  
                 {  
                     p.ProductName,  
                     c.CategoryName,  
                     c.Description,  
                     s.ContactName,  
                     s.ContactTitle,  
                     s.CompanyName,  
                     s.Phone,  
                     s.City,  
                     s.Country  
                 });  
相关问题