【发布时间】:2017-12-13 23:45:18
【问题描述】:
我想构建LINQ,稍后将其转换为sql 中的WHERE IN。在常规用例中,我会这样做:
(querable 是 IQuerable<T> 和 arr 是 IEnumerable<int>)
querable = querable.Where(e => arr.Contains(e.Id));
但是
我的问题是我要过滤的值 (e.Id) 是动态的,我将它作为字符串获取。我该怎么做?
更多背景: 我正在做 REST API 端点,用户可以在其中发送他想要过滤值的列,所以示例是:
filter: {"id": [1,2]}
我想翻译成queryable.Where(e => new [] {1,2}.Contains(e.Id))之类的东西
filter: {"customerId": [4,5]}
我想翻译成queryable.Where(e => new [] {4,5}.Contains(e.CustomerId))之类的东西
所以基本上我的输入是一个列名,它是一个string 和一个 ID 列表,它是 IEnumerable<int>
感觉可以用Expression(类似this answer)实现,但是不知道怎么做。
【问题讨论】:
-
我猜this 是您要查找的内容,但随后使用了参数化的属性名称。