c#linq获取tph中数据库中项目的类型

本文关键字:类型 项目 数据库 tph c#linq 获取 | 更新日期: 2023-09-27 18:26:20

我有一个wpf应用程序,它的数据库首先使用实体框架代码。

我有一个类Shoes.cs和两个从shoes继承的类:Canvas.csBoots.cs

对于映射,我使用了tph方法,所以我有一个桌子鞋子,它有一个鉴别器,用于识别是画布还是靴子

我必须在数据网格中显示我所有的鞋子,以及它们的类型。我知道我不能直接查询鉴别器列,所以我试图做一些类似的事情

 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");
            }
        }

我可以获取数据网格中的所有内容,但在列类型中只显示"错误"。

我怎样才能买到这种类型的鞋?

c#linq获取tph中数据库中项目的类型

您当前正在向类Shoes询问其类型,而应该向实例询问其类型。此外,您还应该使用is。此运算符检查对象是否与给定类型兼容,而不是依赖于确切的类型。

if (pairShoes is Canvas)
        {    
         ....