组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();
来优化代码,但是我不知道如何像那样对这些代码进行分组
让您想要选择的所有不同视图实现相同的接口,并执行如下操作:
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:至于你的评论,创建一个像上面那样的接口,并让你的实体实现它