【问题标题】:Building Linq queries from string in C#4.0 - best practice在 C#4.0 中从字符串构建 Linq 查询 - 最佳实践
【发布时间】:2011-01-08 16:55:33
【问题描述】:

目前我正在使用 LinqKit / Ms 动态查询示例从字符串动态构建 Linq 表达式。这很好用。

  1. LinqKit:http://www.albahari.com/nutshell/linqkit.aspx
  2. Microsoft 动态 Linq 查询:http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

现在,我正在将我的应用程序从 C#3.5 迁移到 C#4.0。我想知道是否有另一种方式(框架的标准方式)从字符串构建查询。

我检查了文档,但还没有找到任何东西。这也不是问题,因为我有上述解决方案。

如果有的话,只有我更喜欢使用“标准”功能。最佳做法是什么?

【问题讨论】:

  • 这里有一个相关的讨论:stackoverflow.com/questions/3782538/…。我认为它是 .NET 4 的最新版本,因此框架中仍然没有内置任何内容 - 除非您正在谈论 Linq to Entities,否则 EF 具有动态查询构建功能(尽管目前在 .NET 4 中并不是新功能据我所知):msdn.microsoft.com/en-us/library/bb338811.aspx
  • 到目前为止,我的旧代码可以正常工作。需要进行微调。例如,方法调用不再接受 null,但您需要调用重载方法。一旦你知道基本上简单的东西。但是,很高兴知道我显然没有错过任何东西。

标签: linq dynamic c#-4.0


【解决方案1】:

我目前正在做这样的事情,我对结果非常满意。我这样做的方式是使用 Entity Framework 和 ObjectQuery.Select(string query, ObjectParameters[] params) 方法。更多信息在这里:http://msdn.microsoft.com/en-us/library/bb298787.aspx#Y586

您不会从字符串中创建表达式,而是使用 SQL 到实体,它可以很好地工作并且正是为此目的而制作的,因为动态地制作表达式并不是微不足道的,实际上更慢。

干杯

【讨论】:

  • 那很好,我花了一些时间来交叉检查它。然而,它显然是与“MSDynamicLinq2010”(来自 VS2008 示例)和“LinqKit”不同的方法,因此是新的(至少对我而言)。我会在下一个解决方案中考虑到这一点。
  • 我想给猫剥皮的方法不止一种。我记得在 TechEd MS 中说过,他们制作 Entity SQL 的明确目的是为制作动态表达式提供更简单的替代方案。它仍然是 DB 抽象的,并且比使用表达式稍微快一些,所以对于动态的东西,我几乎想不出有什么缺点。非常适合我。
猜你喜欢
  • 2018-11-12
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
相关资源
最近更新 更多