2010-04-29 47 views
0

我正在使用Linq-to-sql作爲ORM。我寫這innerjoin如何擺脫asp.net-mvc中的這個錯誤?

public IQueryable<Material> FindAllMaterials() 
{ 
    var materials=from m in db.Materials 
       join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id 
       select new { m.Mat_id, 
       m.Mat_Name, 
       Mt.Name, 
       m.Mat_Type }; 

    return materials; 
} 

但是當我編譯此我得到一個錯誤

Cannot implicitly convert type 'System.Linq.IQueryable<AnonymousType#1>' 
to 'System.Linq.IQueryable<CrMVC.Models.Material>'. 
An explicit conversion exists (are you missing a cast?) 

我失去了一些東西...任何建議....

編輯:

我的sql查詢

select M.Mat_id,M.Mat_Name,T.Name as Measurement,M.Mat_Type as Description 
from Material as M inner join 
    MeasurementTypes as T on M.MeasurementTypeId = T.Id where M.Is_Deleted=0 

回答

1

嘗試 這個

剛剛添加的 「新材料()」 ......

public IQueryable<Material> FindAllMaterials() 
{ 
    var materials=from m in db.Materials 
       join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id 
       select new Material(){ Mat_id = m.Mat_id, 
       Mat_Name = m.Mat_Name, 
       Mat_Type = m.Mat_Type }; 

    return materials; 
} 
+0

@ nWorx它沒有工作... – 2010-04-29 12:47:47

+0

@nWorx我得到了錯誤'不能初始化類型'CrMVC.Models.Material'與集合初始值設定項,因爲它沒有實現'System.Collections.IEnumerable'' – 2010-04-29 12:48:32

+0

@nWorx錯誤'CrMVC.Models .Mater ial不包含ID,Name,Type的定義 – 2010-04-29 12:52:13

0

要獲得相同的結果,設置爲您的SQL嘗試:

public class MatertialSet 
    { 
     public int Mat_id { get; set; } 
     public string Mat_name { get; set; } 
     public string Measurement { get; set; } 
     public string Description { get; set; } 
    } 

    public static IQueryable<MatertialSet> FindAllMaterials() 
    { 
     var materials = from m in db.Materials 
         join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id 
         select new MatertialSet 
         { 
          Mat_id = m.Mat_Id, 
          Mat_name = m.Mat_Name, 
          Description = Mt.Name, 
          Measurement = m.Mat_Type 
         }; 
     return materials.AsQueryable(); 
    }