2015-09-12 81 views
1

我的表格有超過15列,我只想檢索這些列的內存four。然而嘗試下面的方法,給出了錯誤cannot explicitly convert List to IEnumerable。這也是正確的方法嗎?有一種感覺我錯過了where子句或什麼東西? CompanyID是索引。Linq列表中,從DB中只選擇四列?

IEnumerable<Company> company = _db.Company.Select(a => new 
{ 
    CompanyId = Convert.ToString(a.CompanyId), 
    CompanyType = a.CompanyType, 
    CompanyName = a.CompanyName, 
    Email = a.Email 
}).ToList(); 

回答

2

您必須藉由Select語句中Anonymous Type,你不能轉換到List<definedAnonymousType>IEnumerable<Company>。使用var而不是IEnumerable<Company>

var company = _db.Company.Select(a => new 
{ 
    CompanyId = Convert.ToString(a.CompanyId), 
    CompanyType = a.CompanyType, 
    CompanyName = a.CompanyName, 
    Email = a.Email 
}).ToList(); 

那麼你company類型將是List<definedAnonymousType>

0

可以DTO你想要的確切屬性創建CompanyLite和數據轉換爲

var companyLite = _db.Company.Select(a => new CompanyLite 
{ 
    CompanyId = Convert.ToString(a.CompanyId), 
    CompanyType = a.CompanyType, 
    CompanyName = a.CompanyName, 
    Email = a.Email 
}).ToList(); 
+0

可我知道下來投票 – Iceburg

+0

我將承擔downvote的原因是由於這是不必要的 - 該框架將在使用匿名類型時,在運行時創建一個類,如@ dotctor的答案中所示。所以,你的答案本身並沒有錯,它只是沒有其他答案那麼有幫助。 –

+0

感謝Tieson T.的回覆,我真的很感激。我認爲我的回答是錯誤的。但無論如何,這就像接近相同的不同方式。如果他在這個時候需要一些具體的類實現,而不是再次轉換它,他可以直接使用它。 – Iceburg