时间:2019-03-17 标签:c#Linq to SQL and Generics

标签 c# linq-to-sql generics

我对泛型还很陌生,作为学习练习,我尝试创建一个简单的方法,从具有指定 ID 的实体集(表)中选取实体。

    public T GetEntity<T>(int id) where T : class
    {
        return db.GetTable<T>().SingleOrDefault(o => o.id == id); 
    }

上述显然行不通,因为 o.id 中的 o 未知,因此无法访问属性 id - 有人可以帮忙解决一下吗达到这个目的?

最佳答案

如果您的所有实体都包含 id 属性,那么您可以定义一个接口(interface)

public interface IEntity
{
    int id { get; }
}

在您的所有类上实现它并将您的方法更改为

public T GetEntity<T>(int id) where T : IEntity
{
    return db.GetTable<T>().SingleOrDefault(o => o.id == id); 
}

这样的界面在您想要为所有实体做某事的所有地方都很有用,即。按id删除。您可以向界面添加更多属性,即。时间戳。

关于时间:2019-03-17 标签:c#Linq to SQL and Generics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4427412/

相关文章:

Kotlin 泛型多个上限(作为 OR/union 构造)

java - 使具有相同删除二进制文件的通用返回类型兼容吗?

c# - 使用 GTK 构建 GUI#

c# - Audit.net Audit.MVC 输出到 json 而不是 json 文件

c# - 如何使用多态+重载改进这种方法以减少IS(类型检查)?

c# - 如何避免在 linq 中加载特定列

java - T 具有不兼容的边界 - Java 泛型

c# - 以二进制值将字符串格式的十六进制 block 写入注册表

sql - 将具有嵌套连接的高级 SQL 查询转换为 Linq-to-sql

c# - 在linq中使用where子句选择随机问题