C# LINQ-100视图-相同列-通用查询
以下是我的设想: 我们有一个遗留系统,它有大约100个视图,所有视图都会提取相同的数据列 现在,在我的DataContext中,我拥有上下文中的所有视图,并且每个视图都有一个单独的查询。每个查询的结果都加载到一个列表中,并返回给应用程序 有没有可能通过一个查询传入一个对象来知道从哪个表中提取 例如:C# LINQ-100视图-相同列-通用查询,c#,linq,generics,C#,Linq,Generics,以下是我的设想: 我们有一个遗留系统,它有大约100个视图,所有视图都会提取相同的数据列 现在,在我的DataContext中,我拥有上下文中的所有视图,并且每个视图都有一个单独的查询。每个查询的结果都加载到一个列表中,并返回给应用程序 有没有可能通过一个查询传入一个对象来知道从哪个表中提取 例如: var query = from GenericTable.Where(whereClause).Select(ObjectMap); 注意:我知道这不是正确的语法,只是举个例子而已 我的主要目标
var query = from GenericTable.Where(whereClause).Select(ObjectMap);
注意:我知道这不是正确的语法,只是举个例子而已
我的主要目标是避免在所有查询都是相同的情况下编写100个不同的查询,每次都指向不同的视图
任何建议都是受欢迎的,即使是保留100个查询
谢谢 可以使用一种方法。然后可以使用字符串指定where子句和select
var genericList = GetView("predicate to identify view");
genericList.Where("field1 = @1", value1).select("Field1, Field2");
为linq到sql生成的所有映射类型创建公共接口。然后使用分部类定义将接口添加到所有类中 然后像这样写下您的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;
}
public IQueryable GetQueryAgainst(IQueryable源代码,
字符串搜索)其中T:IMyData
{
IQueryable result=source.Where(t=>t.Name.Contains(search));
返回结果;
}
把它叫做:
List<Car> cars = GetQueryAgainst(dc.Cars, "Bob").ToList();
List<People> people = GetQueryAgainst(dc.People, "Bob").ToList();
List<Orders> orders = GetQueryAgainst(dc.Orders, "Bob").ToList();
List cars=GetQueryAgainst(dc.cars,“Bob”).ToList();
List people=GetQueryAgainst(dc.people,“Bob”).ToList();
List orders=GetQueryAgainst(dc.orders,“Bob”).ToList();
但视图也需要是动态的。我想我可以使用泛型,传入视图名称并查询它。想法?你所说的“视图也需要动态”是什么意思?在我的回答中,genericList可能是您的观点之一。由于每个视图的字段名称相同,动态Linq允许您指定where和select子句,而不知道视图的具体类型。只要字段的名称与视图中的名称相同,就应该执行查询。是否可以向系统中添加另一个视图?如果是这样的话,您可以创建一个主视图来显示一个鉴别器列。@Isaac--这个主意很有趣,我知道您从这里来,这可能也行。谢谢David,这就是我要找的!