我尝试根据这些属性的文本命名来动态读取属性值。这仅适用于嵌套类。 但是,如果有一个嵌套的集合类,我希望能够使用动态linq选择一个项目。不幸的是,在阅读集合时,它返回
“目标对象不是ExpandoObject”(。FirstOrDefault)。
有任何编辑想法或其他解决方案吗?
我的代码(.net核心2.1):
string value = string.Empty;
var dataClassProperty = dataClass.GetType().GetProperty(dataClassPropertyName).GetValue(dataClass, null);
if (dataClassProperty is IEnumerable<object>)
{
object nestedPropertyItem = (dataClassProperty as IEnumerable<object>)
.AsQueryable()
.FirstOrDefault(collectionDynamicLinq);
if (nestedPropertyItem != null)
value = nestedPropertyItem.GetType().GetProperty(nestedPropertyName).GetValue(nestedPropertyItem, null)?.ToString() ?? "";
}
答案 0 :(得分:0)
如果要在(数据库)实体类上使用Dynamic Linq,则可以使用System.Linq.Dynamic.Core。
这样,您可以轻松地编写基于文本的linq,例如
var query = db.Customers
.Where("City == @0 and Orders.Count >= @1", "London", 10)
.OrderBy("CompanyName")
.Select("new(CompanyName as Name, Phone)");