组2类似的请求实体框架/ Linq在1

本文关键字:Linq 框架 实体 2类 请求 | 更新日期: 2023-09-27 18:05:20

我有2个视图SQL Server与相同的列。我有2个linq请求与实体框架完全相同;一个应用于View1,另一个应用于View2。我想把这两个请求分组在一个呼叫中。

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();

来优化代码,但是我不知道如何像那样对这些代码进行分组

组2类似的请求实体框架/ Linq在1

让您想要选择的所有不同视图实现相同的接口,并执行如下操作:

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

Edit:至于你的评论,创建一个像上面那样的接口,并让你的实体实现它