这是我的场景: 我们有一个遗留系统,它有大约 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/