c# - 第 2 组类似请求 Entity Framework/Linq in 1

标签 c# linq entity-framework

我有 2 个具有相同列的 SQL Server View 。 我有 2 个与 Entity Framework 完全相同的 linq 请求;一个应用于 View1,另一个应用于 View2。 我想将 2 个请求分组到一个调用中。

switch (day) {
    case day == MONDAY:
        List<int> results = (from day in **container.View1**
                             join model in container.OtherTable ...
                             where ... 
                             ...
                             select id).ToList();
        break;
    case day == FRIDAY:
        List<int> results = (from day in **container.View2**
                             join model in container.OtherTable ...
                             where ... 
                             ...
                             select id).ToList();
        break;
}

我想要类似的东西

ObjectSet<EntityObject> cont= null;

switch (day) {
    case day == MONDAY:
        cont = container.View1;
        break;
    case day == FRIDAY:
        cont = container.View2;
        break;
}

List<int> results = (from day in **cont**
                     join model in container.OtherTable ...
                     where ... 
                     ...
                     select id).ToList();

优化代码,但我不知道如何将这些代码分组...

最佳答案

让您想要选择的所有不同 View 实现相同的接口(interface)并执行以下操作:

public class Something {
    public List<int> GetSomething(Day day)
    {
        var dbc = new Context();

        switch (day)
        {  
            case MONDAY: return  GetResult(dbc.table1, dbc );
            case FRIDAY: return  GetResult(dbc.table2, dbc);
        }
    }

    public List<int> GetResult<T>(DbSet<T> table, Context context) where T : class, MyInterface
    {
        List<int> results = (from day in table
                    join model in context.OtherTable on day.Id equals model.dayId
                    select day.Id).ToList();
        return results;
    }
}

public interface MyInterface
{
        int Id { get; set; }
}

编辑:对于您的评论,创建一个与上面类似的接口(interface),并让您的实体实现它。

关于c# - 第 2 组类似请求 Entity Framework/Linq in 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31678035/

相关文章:

c# - RoleManager 类(WriteToLog 方法)已移动或替换?

c# - Linqify 这个 : Aggregate a subset of a list

c# - 在迁移期间将标识设置为先前创建的列

mysql - 删除或修改 AspNet Identity 的选项

c# - 地理位置、服务和本地通知

C# LINQ 查询

c# - 从数据库获取Guid

c# - 通过System.Linq在C#中获取元素的属性名称和值

c# - 使用 LINQ 将一个对象属性列表更新为其他列表

c# - 在没有 Helper 属性的情况下一对一映射 EntityFramework