我想创建一个泛型类,我可以传递两个表并返回第一个。这两个变量是我用来连接linq查询中的表的字符串值。我想返回的是一个IQueryable值,但它一直返回一个DataQuery值。创建泛型类来返回表
这结束在我的错误MVC视图失败 “方法 'System.Reflection.PropertyInfo的getProperty(System.String)' 有没有支持转换为SQL” 的
代码:
var result = GetTable<Table1, Table2>("Table1id", "Table2id");
public virtual IQueryable<T> GetTable<T, A>(string table1Variable,
string table2Variable)
where T : class
where A : class
{
var table1 = entityDatabaseDC.GetTable<T>();
var table2 = entityDatabaseDC.GetTable<A>();
return from entity in table1.AsQueryable()
join entity2 in table2 on entity.GetType().GetProperty(table1Variable)
equals entity2.GetType().GetProperty(table2Variable)
select entity;
}
它适用于单个表格:
var result = repository.GetTable<Table1>();
public virtual IQueryable<T> GetTable<T>() where T : class
{
return entityDatabaseDC.GetTable<T>();
}
我想知道我所尝试的是否可能。
我想你想使用动态LINQ。 – 2013-02-19 18:21:41
只是一句话:如果你想要一些非常松散的类型,使用Linq-2-sql有什么好处。 – Pleun 2013-02-20 10:01:06