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

标签 c# entity-framework linq ef-code-first

我有一个 wpf 应用程序,其中包含一个首先使用实体​​框架代码制作的数据库。

我有一个类 Shoes.cs 和两个继承自鞋子的类:Canvas.csBoots.cs

对于映射,我使用了 tph 方法,所以我有一个带有鉴别器的 table 鞋,用于识别是 Canvas 还是 Boot

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

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

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

如何获取鞋子的类型?

最佳答案

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

if (pairShoes is Canvas)
        {    
         ....

关于c# linq 在 tph 中获取数据库中项目的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34183583/

相关文章:

entity-framework - 用于连接多个表并在单行中获取逗号分隔值的 LINQ 查询

c# - 使用 VS 2012 进行 .NET Core 开发?

c# - 如何使用 AutoMapper 3 和 Entity Framework 将整数映射到字符串

c# - 一个 View 中的 MVC 多个模型

c# - 真实项目依赖注入(inject)的 F# 模拟

c# - 可以更改 LINQ 中的搜索方法吗?

c# - React 中的 FormData 对象不会在后端 C# 上转换为模型

c# - 将字母数字字符串拆分为分别包含字母和数字字符的数组

c# - FormCollection MVC 表单中传递的复选框值

C#如何使递归函数返回整数数组中第n个最常见的整数