0

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

 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'

请帮助我解决这个问题。

4

1 回答 1

1

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

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

去掉这个演员表,没用。您可以完全删除该行IEnumerable<Object> data = result.ToList();并提供resultObjectReader.

于 2018-06-12T21:43:41.427 回答