如何在运行时使用字符串构建动态Linq查询?

4
这篇文章讨论了使用字符串构建动态查询是否可行。我尝试过。
var ase = a.Select("NEW(activity_date as date)");

它不起作用。

方法'System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable, System.Func)'的类型参数不能从使用中推断出。尝试显式指定类型参数。

C:\.....\filename.xaml.cs

如何在运行时使用字符串构建动态 LINQ 查询?

Scott Gu在他的博客中写到了这个问题。 - Darin Dimitrov
2个回答

3
在linq示例目录中,有一个很棒的Dynamic Linq库可以使用,Scott Gu在他的博客文章中介绍了如何使用它,链接在这里:这里

2

是的,您可以在运行时使用字符串来创建动态的 linq 查询。您需要使用 ObjectQuery 类,如此处所述,以下是实现此操作的代码片段:

string queryString =
    @"SELECT VALUE product FROM AdventureWorksEntities.Products AS product";

// Call the constructor with the specified query and the ObjectContext.
ObjectQuery<Product> productQuery2 =
    new ObjectQuery<Product>(queryString, context);

foreach (Product result in productQuery2)
    Console.WriteLine("Product Name: {0}", result.Name);

ObjectQuery会在运行时针对LINQ模型验证查询,并在查询中使用的某些属性未找到时抛出异常。


我在谷歌上搜索后找不到 System.Data.Objects,那么我该在哪里找到 ObjectQuery? - user677607
请点击我发布的MSDN文档链接(http://msdn.microsoft.com/en-us/library/bb345303.aspx),我认为它在System.Data.Entity.dll中。 - oscarkuo

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