【发布时间】:2016-09-16 07:20:33
【问题描述】:
我想在 LINQ 查询中传递一个字符串。
string TableName = "db.Countries";
var ActualData = (from n in TableName
where n.Record_Instance >= 0
select n).OrderBy(primaryColumn);
我的目标是;我想将查询放在一个方法中,并在需要时调用它。基本上是更改 TableName 并将其作为函数调用的参数传递。
有没有办法做到这一点?
更新:
解决方法:
var TableName = db.Countries;
GetConditionaldata(TableName,..);
private object GetConditionaldata( DbSet<Country> TableName, ..)
{
var ConditionalData = (from n in TableName
where n.Record_Instance >= 0
select n).OrderBy(primaryColumn);
var count = ConditionalData.Count();
var countries = ConditionalData.Skip(jtStartIndex).Take(jtPageSize);
return countries;
}
但在这里,我想再次指定DbSet<Country> 作为参数类型。如果我至少能找到一种方法来获得一个通用 Dbset,我可以将它作为我的 tableName 的参数类型传递,那么我的问题就会得到解决。
【问题讨论】:
-
那么您是否也希望 Where 子句也是动态的?
-
@sachin 我确实需要。
-
@vishalprajapati 这不是我要找的。span>
-
嗯,你可以使用 raw sql 查询和静态部分并在其中动态替换表名。 C# 中的泛型只能用于编译时已知的类型。我们可以使用反射通过字符串名称动态查找类型,但那又如何呢?我们仍然不能将其用作
<T>参数。
标签: c# entity-framework linq