我可以在 Linq 表达式中将字符串参数用作实体 属性 和对象 属性 吗?
Can I use String parameter as an entity property and an object property in Linq expression?
这是我的第一个问题,我会尽力让大家理解。
我想插入具有许多独特属性的 table。
我想在 Linq 表达式中使用字符串而不是 属性。
我想做这样的东西:
public List<string> AddEmploye(Employe pEmploye)
{
List<string> NonUnique = new List<string>();
List<string> Prop = new List<string>
{
"ID",
"NAS",
"CODE",
};
foreach (var prop in Props)
{
var result = (from t in _context.TEMP02A
where t.prop == pEmploye.prop
select t.name).ToList();
if (result.Count() > 0)
NonUnique.Add(prop);
}
return NonUnique;
}
我尝试了 Whosebug 上提出的许多解决方案,但都不适合我的情况。
我尝试了这些解决方案:
0,
1,
2,
3,
和许多其他解决方案,但这些解决方案中的 none 适用于我的情况。
我希望 result.count 为 0
或更高,但是当我尝试 this solution 时,我得到了这个错误:
LINQ to Entities does not recognize propertyInfo.GetValue.
有什么建议吗?
你可以试试 dynamic linq。它有点旧,但它允许您执行以下操作:
Where($"property_name_as_string = @0", some_value)
在你的情况下它会是这样的:
.Where(prop + " = @0",employee_prop_value_by_reflection_here)
.Select("Name");
以你的例子为例:
var val = GetPropValue(pEmploye, prop);
_context.TEMP02A.Where(prop + " = @0",val);
这是我的第一个问题,我会尽力让大家理解。
我想插入具有许多独特属性的 table。
我想在 Linq 表达式中使用字符串而不是 属性。
我想做这样的东西:
public List<string> AddEmploye(Employe pEmploye)
{
List<string> NonUnique = new List<string>();
List<string> Prop = new List<string>
{
"ID",
"NAS",
"CODE",
};
foreach (var prop in Props)
{
var result = (from t in _context.TEMP02A
where t.prop == pEmploye.prop
select t.name).ToList();
if (result.Count() > 0)
NonUnique.Add(prop);
}
return NonUnique;
}
我尝试了 Whosebug 上提出的许多解决方案,但都不适合我的情况。
我尝试了这些解决方案: 0, 1, 2, 3, 和许多其他解决方案,但这些解决方案中的 none 适用于我的情况。
我希望 result.count 为 0
或更高,但是当我尝试 this solution 时,我得到了这个错误:
LINQ to Entities does not recognize propertyInfo.GetValue.
有什么建议吗?
你可以试试 dynamic linq。它有点旧,但它允许您执行以下操作:
Where($"property_name_as_string = @0", some_value)
在你的情况下它会是这样的:
.Where(prop + " = @0",employee_prop_value_by_reflection_here)
.Select("Name");
以你的例子为例:
var val = GetPropValue(pEmploye, prop);
_context.TEMP02A.Where(prop + " = @0",val);