每次尝试使用不同的行执行以下代码时;得到同样的例外:
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'
请帮我解决这个问题。
答案 0 :(得分:1)
因此,您正在使用第三方库Fast-Member,其目的是以比反射更快的方式动态访问类型成员。
问题是您将集合转换为IEnumerable<Object>
,因此所有类型信息都消失了,无法找到成员名称Image
。
只是删除这个演员,它没用。您可以完全删除行IEnumerable<Object> data = result.ToList();
并将result
提供给ObjectReader
。