2013-07-17 45 views
2

我有一個表有三列,我想用自聯接和檢索別名的列。我們可以將匿名類型轉換爲列表<T>使用Linq到C#中的實體嗎?

表:Material(ID,Name,MaterialParentID)

public List<Material> GetMaterialList() 
{ 
    List<Material> materilaList = new List<Material>(); 
    var query = (from c1 in db.Materials 
       join c2 in db.Materials on c1.ID equals c2.MaterialParentID 
       select c2);   

    return query.ToList(); 
} 

我想下面添加到exisiting查詢並返回列表

select new { c2.ID, c2.MaterialParentID, c2.Name, ParentName = c1.Name }) 
+0

return this'query .Select(c2 => new {c2.ID,c2.MaterialParentID,c2.Name,ParentName = c1.Name})。ToList()' – wudzik

+0

@wudzik:這是行不通的。 'List '與'List '不一樣。 –

+0

hello @wudzik查詢​​僅包含c2字段,因此在ParentName = c1.Name中出現錯誤有什麼想法? –

回答

6

只需使用實際的具體類型,而不是匿名之一:

select new Material { 
    ID = c2.ID, 
    MaterialParentID = c2.MaterialParentID, 
    Name = c2.Name, 
    ParentName = c1.Name 
} 
+0

你不能在linq中的select子句中將模型的實體用於實體(所以你必須在'ToList()'後面做這個) –

+0

對不起@Jakub Konecki這不行! –

+0

@SHEKHARSHETE - 爲什麼? –

-1
foreach(var row in query) 
{ 
    material mat =new material(); 
    mat.id=row.ID; 
    mat.name=row.Name; 

    materilaList.add(mat); 
} 

return materiList; 
+0

雖然這可能會回答這個問題,可否請您解釋一下? – Robert

相關問題