工作中碰到一个,用FindAll时,总时报错null,简单场景如下:
List<T> SelectedList = new List<T>();
List<T> Data = new List<T>();其中编号类型为 :
public string  编号 { get; set; }一、遇到问题:
SelectedList = Data.FindAll(x => x.编号.Contains(tscSelectBianHao.Text));
当List中每个实体的编号都赋值时,无误!但当个别实体未赋值时,就报错
“未将对象引用设置到对象的实例。二、尝试方法
SelectedList = Data.FindAll(x => x.编号.GetValueOrDefault().Contains(tscSelectBianHao.Text));  SelectedList = Data.FindAll(x => x.编号==null?null: x.编号.Contains(tscSelectBianHao.Text)); SelectedList = Data.FindAll(x => x.编号?.x.编号.Contains(tscSelectBianHao.Text)); 三、最后解决方法:
SelectedList = Data.FindAll(x => string.IsNullOrEmpty(x.编号)?false:x.编号.Contains(tscSelectBianHao.Text)); 反思,搞混了null与string.empty
"未将对象引用设置到对象的实例。"原因一直以来碰到的都是因为数据为空值,现在又碰到了一种情况,也许数据不是空值,而是empty