對一些LINQ之間的轉換成SQL對象,我們對創建的DTO顯式類型轉換操作符的DTO。這樣我們可以做到以下幾點:LINQ .Cast()擴展方法失敗,但(型)對象的工作
DTOType MyDTO = (LinqToSQLType)MyLinq2SQLObj;
這很好。
但是當您嘗試使用LINQ .Cast()擴展方法來投它trows無效轉換異常說不能投類型Linq2SQLType鍵入DTOType。即低於不起作用
List<DTO.Name> Names = dbContact.tNames.Cast<DTO.Name>()
.ToList();
但低於正常工作:
DAL.tName MyDalName = new DAL.tName();
DTO.Name MyDTOName = (DTO.Name)MyDalName;
及以下也能正常工作
List<DTO.Name> Names = dbContact.tNames.Select(name => (DTO.Name)name)
.ToList();
爲什麼.Cast()擴展方法拋出無效的轉換異常?過去我多次用這種方法使用.Cast()擴展方法,並且當您將類似於基本類型的東西轉換爲派生類型時,它可以很好地工作,但在對象具有明確的轉換運算符時會下降。
可能重複的[Puzzling Enumerable.Cast InvalidCastException](http://stackoverflow.com/questions/445471/puzzling-enumerable-cast-invalidcastexception) – 2010-05-12 14:15:06