c# - LINQ - 100 个 View - 相同的列 - 通用查询

标签 c# linq generics

这是我的场景: 我们有一个遗留系统,它有大约 100 个 View ,所有 View 都提取相同的数据列。

现在,在我的 DataContext 中,我拥有上下文中的所有 View ,并且每个 View 都有一个单独的查询。每个查询的结果加载到一个列表中,该列表返回给应用程序。

是否可以有一个单一的查询,我可以传入一个对象来知道从哪个表中提取数据?

例子:

var query = from GenericTable.Where(whereClause).Select(ObjectMap);

注意:我知道这不是正确的语法,它仅作为示例。

我的主要目标是避免编写 100 个不同的查询,因为它们都是同一件事,每次都指向不同的 View 。

欢迎提出任何建议,即使是保留 100 个查询也是如此。

谢谢!

最佳答案

为 linq to sql 生成的所有映射类型创建一个通用接口(interface)。然后使用部分类定义将接口(interface)添加到所有类。

然后像这样写下你的 100 个查询:

public IQueryable<T> GetQueryAgainst<T>(IQueryable<T> source,
  string search) where T : IMyData
{
  IQueryable<T> result = source.Where(t => t.Name.Contains(search));
  return result;
}

并这样调用它:

List<Car> cars = GetQueryAgainst(dc.Cars, "Bob").ToList();
List<People> people = GetQueryAgainst(dc.People, "Bob").ToList();
List<Orders> orders = GetQueryAgainst(dc.Orders, "Bob").ToList();

关于c# - LINQ - 100 个 View - 相同的列 - 通用查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2344833/

相关文章:

c# - 来自枚举的 Swagger 预定义返回类型值

c# - Linq 多级内连接

c# - 使用 winform checkbox 进行 linq 查询

.net - 使用 linq 和 sql 比较两个列表

generics - Kotlin 中具有泛型的优雅事件处理程序

c# - 覆盖 EntityFramework SaveChanges - 获取 SQL 并调用自定义过程

C# 索引器和 Linq

c# - 复杂的正则表达式 : key-value pairs

c# - 将实例转换为通用父级时出错

java - 如何使用泛型类型声明类 - Java 1.7