【发布时间】:2020-06-01 09:46:41
【问题描述】:
我正在使用 MongoDB C# 驱动程序,我想对集合执行 linq where 子句,将属性的小写版本与我在内存中的列表的小写版本进行比较。像这样;
items = items.Where(i => listToCheck.Contains(i.Property.ToLower()));
我也试过了……
items = items.Where(i => i.Property.ToLower().In(listToCheck));
我认为这实际上是正确的,应该可以工作,但可能尚未实施。
我收到一条错误消息,提示与 ToLower() 命令相关的“不支持 where 子句”。据我所知,驱动程序目前无法完成此操作,因为它必须使用 Regex 进行“IN”查询,而我认为这是不可能的。
我想知道是否可以,如果可以,怎么做?
【问题讨论】:
-
你试过了吗:
items = items.Where(i => listToCheck.Any(item => item.ToLower() == i.Property.ToLower()));? -
我刚试了一下,没用。我收到此错误...'无法确定表达式的序列化信息:String[]:{ "one", "two" }'
-
项目是否可查询?可能是你需要做 items.AsQueryable()