对象'不包含动态数据的MainTypeCode定义

时间:2017-12-14 12:35:14

标签: c# linq dynamic

以下查询返回一些用于单元测试的模拟数据。

var colorsList = (IEnumerable<dynamic>)colorsRepository.GetColorsList().Result;

它将结果作为动态对象

enter image description here

我只想获得MainTypeCode值。但它显示对象&#39;不包含MainTypeCode

的定义
colorsList.Select(cl => (dynamic)cl.MainTypeCode);

编辑:

  

让我知道如何安排虚拟/模拟动态数据来执行查询?

并且colorsRepository.GetColorsList().Result;正在返回。我应该更改模拟数据来运行查询吗?

 public static IEnumerable<dynamic> GetColorsList()
        {
            List<dynamic> colours = new List<dynamic>();
            for (int i = 0; i < 1; i++)
            {
                colours.Add((dynamic)new
                {
                    MainTypeCode = 1,
                    DoorCode = "001"
                });
            }
            return colours.AsEnumerable();
        }

2 个答案:

答案 0 :(得分:0)

可悲的是,我有很多时间来详细说明一个更好的答案,但你必须使用反射才能获得动态属性。

如果您事先知道动态属性,可以尝试创建一个类并使用反射创建一个Map方法来获取该对象。

答案 1 :(得分:0)

我猜,问题可能与动态有关。你可以试试下面这样的东西吗?

var colorLists = new [] { new {DoorCode = "001", MainTypeCode = 1}, new {DoorCode = "002", MainTypeCode = 2}};
var mainTypeCodes = colorLists.Select(cl => cl.GetType().GetProperty("MainTypeCode").GetValue(cl, null));

Get value of c# dynamic property via string