使用数据表的where子句选择不同的值

时间:2015-04-23 15:25:15

标签: c# linq-to-objects

我有一个数据表。我从下面的代码中获得了不同的列值。

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错误。 {“对象引用未设置为对象的实例。”}

2 个答案:

答案 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