LINQ - 使用动态LINQ是否可以动态指定from子句?

3

我想构建动态linq。

但是我想动态设置表(from子句)。

这个可能吗?

马尔科姆

3个回答

1

一如既往,这取决于情况;-p

如果您想使用LINQ扩展方法或查询语法,则不行:这与IQueryable<T>紧密耦合,其中T是源类型。根据情况,泛型可能是一个选项:

public IQueryable<T> Get<T>(int id) where T : SomeBaseClass
{
    return GetData<T>().Where(row=>row.SomeProp == id);
}

以上内容可以通过使用GetTable<T>()(以及特别手工制作的数据对象)与LINQ-to-SQL一起使用。当然,要从字符串转换为泛型,您必须使用反射(MakeGenericMethod)-因此并不是简单的事情!
您能澄清这里的确切情况吗?
听起来也许你应该在这里使用常规命令...例如,也许使用ExecuteQuery,它接受一个字符串命令并将数据加载到类型化对象中。

0

我觉得你可能是从SQL世界刚刚入门(猜想),那么,你想做的第一件事就是从字符串中构建查询(我也想这样)。但是在Linq中,我们真的不喜欢任何地方都有字符串,所以如果你能以某种方式将要查询的表的类型发送给Linq,而不是字符串名称,那么Linq就会很开心,并且你可以在编译时检查查询是否有效。这是一个双赢的局面:)

所以,是的,请给我们一些例子,说明为什么你真的希望表名作为字符串:)


0

LINK 不是 SQL。

当然,你可以使用 LINQ-To-SQL 从 SQL Server 数据库中获取数据,但是 LINQ 和 SQL 是两个非常不同的东西。

在很多情况下,它们的使用模式看起来很像,但是 LINQ 的优点是具有编译时类型检查和推断,而不是运行时检查。你无法在 SQL 中做到这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接