2014-02-17 111 views
0

我寫此查詢和我的業務規則的理解有所改善我已經修改了它。無效的LINQ強制轉換異常同一對象類型

在這個最新的迭代我測試,看是否確實我有一定的冗餘,可以被刪除。讓我先給你查詢然後錯誤。

public List<ExternalForums> GetAllExternalForums(int extforumBoardId) 
{ 
    List<ExternalForums> xtrnlfrm = new List<ExternalForums>(); 

    var query = _forumExternalBoardsRepository.Table 
     .Where(id => id.Id == extforumBoardId) 
     .Select(ExtForum => ExtForum.ExternalForums); 
    foreach (ExternalForums item in query) 
    { 
     xtrnlfrm.Add(new ExternalForums { Id = item.Id , ForumName = item.ForumName, ForumUrl = item.ForumUrl }); 
    } 

    return xtrnlfrm; 
} 

現在萬一它不明顯查詢選擇正在返回外部論壇列表。然後我遍歷所述列表並將這些項目添加到另一個ExternalForums對象列表。這是我期望刪除的冗餘。

預編譯器是GTG,所以我通過它跑了一次非常一切是重構前猶太跑進一個奇怪的錯誤,因爲我開始循環。

無法轉換System.Collections.Generic.HashSet的對象 NamSpcA.NamSpcB.ExternalForums鍵入NamSpcA.NamSpcB.ExternalForums。

咦?它們是相同的對象類型。

所以我做錯了什麼在我伸出我的選擇的方式嗎?

TIA

回答

1
var query = _forumExternalBoardsRepository.Table 
    .Where(id => id.Id == extforumBoardId) 
    .Select(ExtForum => ExtForum.ExternalForums); 

該查詢返回IEnumerable<T>其中TExtForum.ExternalForums屬性,我希望成爲另外一個集合,這個時候的ExternalForum的類型。錯誤信息與此相匹配,並說您有IEnumerable<HashSet<ExternalForums>>

如果你需要收集的收集被壓扁成ExternalForums使用SelectMany而不是一個大集合:

var query = _forumExternalBoardsRepository.Table 
    .Where(id => id.Id == extforumBoardId) 
    .SelectMany(ExtForum => ExtForum.ExternalForums); 
+0

我會必須做這一塊的一些育人/教程。你死了,但我有點粗略爲什麼。我明白,但它是陰暗的。永遠不要感謝你! – GPGVM

相關問題