我有一个数据表。我从下面的代码中获得了不同的列值。
AllFields
是我的数据表。
var distinctIds = AllFields.AsEnumerable()
.Select(s => new
{
id = s.Field<string>(ColumnName),
})
.Distinct()
.ToList();
但是我希望得到一个列的不同值,其中where列在同一列上。我试过下面的事情。
var distinctIds = AllFields.AsEnumerable()
.Select(s => new
{
id = s.Field<string>(ColumnName),
})
.Distinct()
.Where(f => f.id.Contains(TxtStringSearchInput.Text))
.ToList();
它显示我在运行时误差低于此值。
nullreferenceexception错误。 {“对象引用未设置为对象的实例。”}
答案 0 :(得分:3)
当你得到NRE时。看起来其中一个值即将到来null
因此您应该在Where()
中检查 null :
var distinctIds = AllFields.AsEnumerable()
.Select(s => new
{
id = s.Field<string>(ColumnName),
})
.Distinct()
.Where(f => f.id !=null && f.id.Contains(TxtStringSearchInput.Text))
.ToList();
答案 1 :(得分:3)
由于您在第二次调用时收到空引用异常,唯一的区别是您在Contains
字段上调用了id
,因此很可能是{{1对于您的一个比较,field为null。
在致电id
之前,请尝试检查null
,例如:
Contains