我需要为支持AutoQuery的API请求添加过滤功能,因此基于this SO answer,使用q.And
添加条件。问题是POCO属性之一是List<string>
,似乎做了一个简单的Contains()
工作。这是我所拥有的一个简单例子:
public class PocoObject
{
public int Id { get; set; }
public List<string> Names { get; set; }
}
我的服务如下:
public object Get(PocoObjects request)
{
var q = AutoQuery.CreateQuery(request, Request.GetRequestParams());
if (someCondition)
{
q.And(x => x.Names.Contains(request.TargetName));
}
return AutoQuery.Execute(request, q);
}
问题是,我收到这样的错误:
variable 'x' of type 'TestProject.ServiceModel.Types.PocoObject' referenced from scope '', but it is not defined
如果我将Contains
更改为另一个属性上的更简单的相等比较,则AutoQuery可以正常工作。任何想法如何实现这一目标?
答案 0 :(得分:0)
您不能对像List<string>
这样的blob复杂类型属性执行服务器端SQL查询。在从db返回结果并将其反序列化为类型化POCO之后,需要在客户端上应用任何查询。