我想构建动态linq。
但我想动态设置表(来自子句)
这可能吗?
马尔科姆
答案 0 :(得分:1)
一如既往,取决于:-p
如果你想使用LINQ扩展方法或查询语法,那么no:这与IQueryable<T>
紧密耦合,其中T
是源类型。泛型可能是一种选择,具体取决于场景:
public IQueryable<T> Get<T>(int id) where T : SomeBaseClass
{
return GetData<T>().Where(row=>row.SomeProp == id);
}
以上内容可以与LINQ-to-SQL一起使用,例如,使用GetTable<T>()
(以及特别是手工制作的数据对象)。当然,要从字符串到泛型,你必须使用反射(MakeGenericMethod
) - 所以不是微不足道的!
你能澄清这里的具体情况吗?
听起来像也许你应该在这里使用常规命令...例如,可能使用ExecuteQuery,它接受一个字符串命令并将数据加载到类型化对象中。 / p>
答案 1 :(得分:0)
我认为你很可能从SQL世界中获取新鲜(猜测),然后是的,你要做的第一件事是从字符串构建查询(我也想要)。但是在Linq中我们真的不喜欢字符串anyware,所以如果你可以发送表的类型来查询,而不是字符串名称,那么Linq会很高兴,并且你有编译器时间检查你的查询工作。这是一个双赢的局面:))
所以是的,给os一些例子,说明为什么你真的希望将表名作为字符串:)
答案 2 :(得分:0)
LINK不是SQL。
当然,您可以使用它来使用LINQ-To-SQL从SQL Server数据库中获取数据,但LINQ和SQL是两个非常不同的东西。
在很多情况下,它们的使用模式看起来很相似,但LINQ的优点是进行编译时类型检查和推断而不是运行时检查。你不能用SQL。