2015-12-09 38 views
2

我有一個wpf應用程序,首先使用Entity Framework代碼創建數據庫。c#linq在tph中獲取數據庫中的項目類型

我有一個類Shoes.cs和兩班,從鞋繼承:Canvas.csBoots.cs

對於映射我使用TPH的方法,所以我有一個表的鞋子,有一個鑑別器indentifing如果是帆布或靴子

我必須在datagrid中顯示我擁有的所有鞋子,以及它們的類型。我知道,我不能直接查詢鑑別列,所以我試圖做這樣的事情

var allShoes = (from shoes in db.Shoes 
       select shoes).ToList(); 

     List<string> typeOfShoes = new List<string>(); 

     foreach (Shoes pairShoes in allShoes) 
     { 
      if (pairShoes.GetType() == typeof(Canvas)) 
      { 
       typeOfShoes .Add("Canvas"); 
      } 
      else if (pairShoes.GetType() == typeof(Boots)) 
      { 
       typeOfShoes .Add("Boots"); 
      } 
      else 
      { 
       typeOfShoes .Add("Wrong"); 
      } 
     } 

我可以在我的DataGrid中的一切,但只顯示在列類型「錯誤的」。

我如何獲得鞋子的類型?

回答

1

您當前正在問類Shoes的類型,您應該詢問實例的類型。另外你還應該使用is。此運算符檢查對象是否與給定類型兼容,而不是依賴於確切類型。

if (pairShoes is Canvas) 
     {  
     .... 
+0

我剛剛試過,沒有工作。 – Koosshh56

+0

您的類型檢查也不起作用,因爲您正在比較基類的類型,我改變了使用'is'的答案,而不是 – Jaco

+0

謝謝,現在是開始了。我非常難以投射:) – Koosshh56

相關問題