为了账号安全,请及时绑定邮箱和手机立即绑定

创建Where查询的LINQ扩展方法

创建Where查询的LINQ扩展方法

C#
尚方宝剑之说 2021-10-09 16:48:30
我正在尝试创建一个扩展方法,该方法可用于 LINQ-to-Object 和 LINQ-to-Entities 以创建功能Where查询。最终会涉及更多内容,但一开始我遇到了一个问题,只是让方法接受 lambda 列选择并将其用作Contains()调用的基础。我已经能够为 LINQ-to-Objects 做一些工作,但是当我尝试将它用于 LINQ-to-Entities 时,它有一个问题。以下是适用于 LINQ-to-Objects 的方法:public static IQueryable<T> WhereContains<T>(this IQueryable<T> query, Expression<Func<T, string>> column, IList<string> values){    return query.Where(o => values.Contains(column.Compile().Invoke(o)));}如果这是针对实体框架运行的,我会收到一个异常说明LINQ to Entities 无法识别该方法...我有一种感觉,这将需要使用ExpressionVisitor,但我一直无法弄清楚它需要如何连接。有没有人能够做到这一点?更新:我认为这不是重复的,因为 xanatos 提供的答案显示了一种无需使用 ExpressionVisitor 即可完成此任务的直接方法。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信