2012-11-11 95 views
1

檢索值在這個功能:錯誤而來自本地數據庫

public IList<foods> GetFoods() 
{ 
    IList<foods> myFoods = null; 

    using (var db = new FoodsContext(ConnectionString)) 
    { 
     var query = from e in db.MyFoods 
        select e; 

     myFoods = query.ToList(); 

     return myFoods; 
    } 
} 

我就得到一個錯誤:

myFoods = query.ToList(); 

錯誤說:

InvalidCastException was unhandled

但我可以得到某一列的值,即:當我寫入時:

var query = from e in db.MyFoods 
    select e.calorie; 

我正確地獲取卡路里列。那麼問題在哪裏?謝謝。

+0

你能提供你的'foods'類和異常的調用堆棧的定義是什麼? –

回答

0

根據你的代碼,我相信你的linq查詢的結果不能直接轉換爲食物類對象集合。試試下面的代碼

public IList<foods> GetFoods() 
    { 
     IList<foods> myFoods = null; 

     using (var db = new FoodsContext(ConnectionString)) 
     { 
      var query = from e in db.MyFoods 
         select new foods 
         { 
          calorie = e.calorie, 

          // Map other properties of foods object here 

         }; 

      myFoods = query.ToList(); 

      return myFoods; 
     } 
    } 

讓我知道如果你得到細節

+0

與之前的答案相同。 –

0

我猜你正在使用LINQ2SQL和意味着你的表名是MyFood錯誤。因此,當您嘗試使用query.ToList();時,它會返回List<MyFood>,並嘗試將List<MyFood>轉換爲IList<foods>,從而導致InvalidCastException

試試這個,

public IList<foods> GetFoods() 
{ 
    using (var db = new FoodsContext(ConnectionString)) 
    { 
     return db.Employees.Select(e => new foods 
             { 
              calorie = e.calorie, 

              // Map other properties of foods object here 
             }).ToList<foods>(); 
    } 
} 
+0

感謝您的代碼。其實,沒有我得到的錯誤:「在查詢中顯式構造實體類型'test.foods'是不允許的。」 –