Maa*_*eel 7 c# linq anonymous linq-to-sql
我有一个由匿名对象组成的LINQ查询.
在给定的点上,我想通过传入的搜索参数来限制结果,但这可以是一个或多个参数,并且我想使用这些参数执行"LIKE x OR LIKE y OR LIKE z".
在代码中,它看起来像这样:
reservations = reservations.Where(r =>
r.GuestLastName.Contains(parameter1) || r.GuestFirstName.Contains(parameter1) ||
r.GuestLastName.Contains(parameter2) || r.GuestFirstName.Contains(parameter2) ||
// Parameter 3, 4, 5,..
);
Run Code Online (Sandbox Code Playgroud)
我怎么能动态地构造它,知道它reservations是IQueryable<'a> (anonymous object)什么类型?我查看了各种资源,当我知道类型时,我似乎只能找到一种方法,而不是在使用匿名类型时.
重要的是要知道它是Linq to SQL,因此它应该被转换为SQL查询而不是在内存中过滤...
有两种可能的方法:
Expression正如 Coincoin 所指出的那样,构建一个将所有参数放入数组并使用Any:
var parameters = new [] { parameter1, parameter2, /*...*/ }
reservations = reservations
.Where(r =>
parameters.Any(p => r.GuestFirstName.Contains(p)
|| r.GuestLastName.Contains(p)));
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1278 次 |
| 最近记录: |