参数超出范围异常,参数名称:名称

时间:2018-06-12 20:31:13

标签: c# linq fastmember

每次尝试使用不同的行执行以下代码时;得到同样的例外:

 var result = (from prod in context.ProductsTbls
                          join img in context.ProductImagesTbls
                          on prod.Id equals img.ProductId
                          where prod.UserId == 4 && img.IsDefaultImage ==true
                          select new
                          {                            
                              Image = img.Image
                          }).ToList();


            IEnumerable<Object> data = result.ToList();
            DataTable table = new DataTable();

            using (var reader = ObjectReader.Create(data , "Image"))
            {
                table.Load(reader); // Exception appears here
            }

得到这个例外:

System.ArgumentOutOfRangeException: 'Specified argument was out of the range of valid values. Parameter name: name'

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

因此,您正在使用第三方库Fast-Member,其目的是以比反射更快的方式动态访问类型成员。

问题是您将集合转换为IEnumerable<Object>,因此所有类型信息都消失了,无法找到成员名称Image

只是删除这个演员,它没用。您可以完全删除行IEnumerable<Object> data = result.ToList();并将result提供给ObjectReader