Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对象集合的动态linq-目标对象不是ExpandooObject_C#_Reflection_.net Core_Dynamic Linq_.net Core 2.1 - Fatal编程技术网

C# 对象集合的动态linq-目标对象不是ExpandooObject

C# 对象集合的动态linq-目标对象不是ExpandooObject,c#,reflection,.net-core,dynamic-linq,.net-core-2.1,C#,Reflection,.net Core,Dynamic Linq,.net Core 2.1,我尝试根据这些属性的文本命名动态读取属性值。这只适用于嵌套类。 但如果有嵌套的集合类,我希望能够使用动态linq选择一个项。不幸的是,当在集合中读取时,它返回 “目标对象不是ExpandooObject”(.FirstOrDefault) 有没有编辑或其他解决方案的想法 我的代码(.net core 2.1): string value=string.Empty; var dataClassProperty=dataClass.GetType().GetProperty(dataClassPro

我尝试根据这些属性的文本命名动态读取属性值。这只适用于嵌套类。 但如果有嵌套的集合类,我希望能够使用动态linq选择一个项。不幸的是,当在集合中读取时,它返回

“目标对象不是ExpandooObject”(.FirstOrDefault)

有没有编辑或其他解决方案的想法

我的代码(.net core 2.1):

string value=string.Empty;
var dataClassProperty=dataClass.GetType().GetProperty(dataClassPropertyName).GetValue(dataClass,null);
if(dataClassProperty是IEnumerable)
{
对象nestedPropertyItem=(数据类属性为IEnumerable)
.AsQueryable()
.FirstOrDefault(CollectionDynamicIQ);
if(nestedPropertyItem!=null)
value=nestedPropertyItem.GetType().GetProperty(nestedPropertyName).GetValue(nestedPropertyItem,null)?.ToString()??“”;
}

如果要在(数据库)实体类上使用动态Linq,可以使用

有了它,您可以轻松编写基于文本的linq,如

var query = db.Customers
    .Where("City == @0 and Orders.Count >= @1", "London", 10)
    .OrderBy("CompanyName")
    .Select("new(CompanyName as Name, Phone)");
var query = db.Customers
    .Where("City == @0 and Orders.Count >= @1", "London", 10)
    .OrderBy("CompanyName")
    .Select("new(CompanyName as Name, Phone)");