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

Argument out of range exception, Parameter name : name

每次尝试用不同的行执行以下代码;得到相同的异常:

 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'

请帮我解决这个问题。

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

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

把这个cast去掉就行了,没用的。您可以完全删除行 IEnumerable<Object> data = result.ToList(); 并将 result 提供给 ObjectReader.