【发布时间】:2020-01-23 17:01:58
【问题描述】:
我有以下方法,它们返回不同的实体,除了这些方法的输入参数都是相同的,我在 where 条件下使用这些方法
public IQueryable<LibraryEnvironment> EnvironmentFields(string spaceFunction, string category, string source)
{
return _dbContext.LibraryEnvironment.Where(s => s.SpaceFunction == spaceFunction
&& s.Category == category &&
s.EnvironmentSource.Name == source);
}
public IQueryable<LibraryEquipment> EquipmentFileds(string spaceFunction, string category, string source)
{
return _dbContext.LibraryEquipment.Where(s => s.SpaceFunction == spaceFunction
&& s.Category == category &&
s.EquipmentSource.Name == source);
}
public IQueryable<LibraryLighting> LightingFields(string spaceFunction, string category, string source)
{
return _dbContext.LibraryLighting.Where(s => s.SpaceFunction == spaceFunction
&& s.Category == category &&
s.LightingSource.Name == source);
}
还有其他类似的方法
我正在寻找一种在所有这些方法中创建通用泛型方法的方法,但返回类型不同,无法找到方法。我正在使用 .Net 核心和 EF 核心
如果有人对此提出任何想法,将非常感谢我,提前感谢
【问题讨论】:
-
看看Generics,你可以接受一个
Expression<Func<TInput, TOutputProperty>>来引入一个选择器让你选择s.EnvironmentSource、s.EquipmentSource或s.LightningSource -
@ColinM 能否提供一些示例代码,不胜感激
-
s.EnvironmentSource、s.EquipmentSource和s.LightingSource有共同的基本类型吗?我看到他们三个都有一个Name属性。 -
@Sweeper 是的,它们都来自单个表并根据我们使用它们的实体重命名
-
哦,所以它们都是同一类型?那它是什么类型的呢?
标签: c# .net entity-framework linq dynamic-linq