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

时间:2011-06-20 21:31:02

标签: c# linq dynamic

This article谈到使用字符串构建动态查询是否可能?

我试过

var ase = a.Select("NEW(activity_date as date)");

它不起作用

  

方法的类型参数   “System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable,   System.Func)'不能   从用法推断。尝试   指定类型参数   明确。

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

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

2 个答案:

答案 0 :(得分:3)

在linq samples目录中有一个很酷的Dynamic Linq库你可以使用,Scott Gu有一篇关于如何使用它的相当不错的博客文章here.

答案 1 :(得分:2)

是的,您可以在运行时使用字符串进行动态linq查询。你需要使用提到的here的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模型验证查询,如果找不到您在查询中使用的某些属性,则抛出异常。