16得票3回答
如何发出一个 System.Linq.Expression?

我有一些代码,使用System.Linq.Expressions和Expression.Lambda>.Compile()等方法生成各种Func<>委托。我想将生成的函数序列化成程序集以供后续使用。过去,我曾使用System.Reflection.Emit做过一些工作,但现在既然使用了Linq...

15得票1回答
LINQ表达式中的Contains函数

我希望在linq中添加动态表达式,但是在contains方法上遇到了问题,对于Equal方法它可以完美地工作。问题在于我正在动态获取FilterField,如何在查询中替换它。到目前为止,我已经尝试过:List&lt;int&gt; Ids = new List&lt;int&gt;(); ...

15得票3回答
Entity Framework 如何通过字符串 SQL 进行数据过滤

我正在将一些筛选数据存储在我的表中。让我更清楚地说明一下:我想要在数据库中存储一些where子句及其值,并在需要从数据库检索数据时使用它们。 例如,考虑一个名为people的表(实体集)和另一个表中的一些过滤器:"age" , "&gt; 70" "gender" , "= male" 现在当...

14得票1回答
将LINQ表达式传递给另一个查询提供程序

我有一个简单的自定义查询提供程序,它接受表达式,将其转换为SQL并查询SQL数据库。 我想在QueryProvider中创建一个小缓存,以存储常用的对象,这样就可以在没有数据库命中的情况下进行检索。 QueryProvider具有以下方法: public object Execute(S...

14得票2回答
使用动态LINQ按嵌套属性排序,其中包含空属性。

我正在使用这个动态linq orderby函数,我从这里得到它。这对于嵌套属性很有效,所以我可以这样做:var result = data.OrderBy("SomeProperty.NestedProperty"); 问题在于如果SomeProperty为空,则对NestedProperty...

14得票2回答
类型“System.Int32”的表达式不能用于方法“Boolean Equals(System.Object)”的类型为“System.Object”的参数。

我有一个通用的网格视图列过滤方法,可以按照列名称和搜索文本过滤网格视图记录。当我操作可空 int 数据列时,此方法会抛出错误: 表达式类型为“System.Int32”的参数不能用于方法“Boolean Equals(System.Object)”的类型为“System.Object”的参...

12得票4回答
将lambda表达式转换为唯一的缓存键

我看了其他类似的问题,但没有找到可行的答案。 我一直在使用以下代码为我的linq查询生成唯一键,以将结果存储到缓存中。 string key = ((LambdaExpression)expression).Body.ToString(); foreach (Paramete...

12得票1回答
在System.Linq.Expressions中,没有case的switch语句(但有默认情况)

我尝试使用System.Linq.Expressions创建一个switch表达式:var value = Expression.Parameter(typeof(int)); var defaultBody = Expression.Constant(0); var cases1 = new...

12得票1回答
如何使用Linq表达式访问字典项

我希望使用Linq表达式构建一个Lambda表达式,能够使用字符串索引来访问“属性包”样式的字典中的项目。我正在使用 .Net 4。 static void TestDictionaryAccess() { ParameterExpression valueBag...

12得票4回答
动态添加新的lambda表达式以创建过滤器。

我需要在一个ObjectSet上进行过滤,以便通过以下操作获得所需的实体: query = this.ObjectSet.Where(x =&gt; x.TypeId == 3); // this is just an example; 在代码的后面(延迟执行之前),我再次按照以下方式过...