C# 渲染IEnumerable<;字符串>;来自实体框架通用存储库

C# 渲染IEnumerable<;字符串>;来自实体框架通用存储库,c#,linq,entity-framework,generics,C#,Linq,Entity Framework,Generics,我不确定这是否可能。我的数据库中有几个特定的表,它们由实体框架的代码优先类表示。这些类具有不同的属性,除了Id属性(始终是字符串)之外。我想知道是否有任何方法可以创建一个通用的存储库来选择和呈现一系列的Id属性。例如: class GetDbIds<T> where T : class { // PROPERTIES DbContext DbContext {get;set;} DbSet<T> DbSet {get;set;} // C

我不确定这是否可能。我的数据库中有几个特定的表,它们由实体框架的代码优先类表示。这些类具有不同的属性,除了Id属性(始终是字符串)之外。我想知道是否有任何方法可以创建一个通用的存储库来选择和呈现一系列的Id属性。例如:

class GetDbIds<T> where T : class
{
    // PROPERTIES
    DbContext DbContext {get;set;}
    DbSet<T> DbSet {get;set;}

    // CONSTRUCTOR
    public GetDbIds(DbContext dbContext)
    {
         DbContext = dbContext;
         DbSet = DbContext.Set<T>();
    }

    // METHODS
    public IEnumerable<string> GenerateNewIdSequence()
    {
         return DbSet.Select(x => x.Id);
    }
}
class GetDbIds,其中T:class
{
//性质
DbContext DbContext{get;set;}
DbSet DbSet{get;set;}
//建造师
公共getdbid(DbContext-DbContext)
{
DbContext=DbContext;
DbSet=DbContext.Set();
}
//方法
public IEnumerable GenerateNewIdSequence()
{
返回DbSet.Select(x=>x.Id);
}
}

我知道如何设置一个基本的通用存储库,但我没有遇到任何模式也可以让您动态查询存储库

您可以将
T
约束到具有以下属性的接口:

interface IIdentifiable { string Id { get; } }
class GetDbIds<T> where T : IIdentifiable, class
接口IIIdentifiable{string Id{get;}
类getDBID,其中T:IIIdentifiable,类

您可以将
T
约束到具有以下属性的接口:

interface IIdentifiable { string Id { get; } }
class GetDbIds<T> where T : IIdentifiable, class
接口IIIdentifiable{string Id{get;}
类getDBID,其中T:IIIdentifiable,类

!谢谢你引起我的注意。完美的解决方案!纯粹的令人敬畏!谢谢你引起我的注意。完美的解决方案!