【发布时间】:2016-11-16 18:15:37
【问题描述】:
我有一个属性列表
string[] strings =
{
"State", "Name","Location"
};
它们都在字符串类型的Test对象中,我需要先循环抛出它们并在属性等于“OK”时过滤数据
这是我的代码 sn-p
for (int x=0;x<strings.Length;x++)
{
// PropertyDescriptor prop = TypeDescriptor.GetProperties(typeof(Test)).Find(strings[x],true);
var miss = _unityOfWork.TestRepository.Get(i =>
i.GetType().GetProperty(strings[x]).Equals("OK") )
.Select().toList()
此代码返回以下异常:
“LINQ to Entities 无法识别方法 'System.Reflection.PropertyInfo GetRuntimeProperty(System.Type, System.String)' 方法,并且该方法无法转换为存储表达式。”
我需要用数组中的属性名过滤列表
【问题讨论】:
-
您的 TestRepository 到底是什么?它是如何实现的?
-
我想你的意思是说当属性value等于“OK”,对吧?
-
@EduardMalakhov 它继承自 GenericRepository
-
LINQ 正在尝试将表达式
i.GetType().GetProperty(strings[x]).Equals("OK")转换为数据库查询(通常是 SQL),这是错误中的store expression部分。然而,第一个支持 .NET 反射的数据库还没有被发明出来…… -
@wdosanjos 对,Test 类有 3 个属性,当它们等于“OK”时,我需要验证它们
标签: c# entity-framework linq properties