c# - LINQ to Entities 无法识别方法“System.Object GetValue(System.Object)”
问题描述
我有这个方法:
public IQueryable<T> List(HttpRequestMessage request)
{
var queryString = request.GetQueryNameValuePairs();
var models = _service.List();
foreach(var item in queryString)
models = models.Where(m => m.GetType().GetProperty(item.Key).GetValue(m).ToString().Contains(item.Value));
return models;
}
当我运行它时,我得到了这个错误:
LINQ to Entities 无法识别方法“System.Object GetValue(System.Object)”方法,并且该方法无法转换为存储表达式。
我一直无法修复。有谁知道如何解决它或可以告诉我在哪里可以找到?
解决方案
我按照建议使用解决了这个问题System.Linq.Dynamic
,我能够做到这一点:
public class DataProvider<T> where T : class
{
private readonly IService<T> _service;
public DataProvider(IService<T> service) => _service = service;
public IQueryable<T> List(HttpRequestMessage request)
{
var queryString = request.GetQueryNameValuePairs();
var models = _service.List();
foreach (var item in queryString)
{
var query = $"{ item.Key }.ToString().Contains(\"{ item.Value }\")";
models = models.Where(query);
}
return models;
}
}
这让我可以使用泛型并解决我的问题:)
推荐阅读
- javascript - 如何处理来自 window.location = 'URL' 的 204 错误
- java - Spring Boot 单元测试中的配置 - 无法加载 ApplicationContext
- google-apps-script - UrlFetchApp.fetch 在尝试获取内容时中止执行
- c# - 在 Blazor 应用程序中使用 Azure Active Directory 时如何在 asp net core 3.1 中自定义注销页面
- flutter - 如何在flutter Provider中为单个小部件使用多个消费者
- python - Modin Pandas 和 Dask 除了挂起什么也不做
- karate - 无法使用没有标识符名称的数组断言单个数组中的所有元素
- jq - jq - 从文件中合并任意数量的 json 数组时列表中的重复对象
- javascript - 使用扩展运算符的 AssertionError
- terraform - 您可以使属性不触发资源更改吗?