Вы также должны активно отфильтровать результаты, которые имеют нулевое значение для атрибута1
return items.Where(i => !String.IsNullOrEmpty(i.Attribute1) && i.Attribute1.Contains(filter));
Когда вы создаете переменную типа, если вы не укажете значение, оно будет иметь значение по умолчанию для типа. В ссылочных типах .NET и типах значений есть два типа. Значение по умолчанию для ссылочных типов (что-либо созданное как класс) является нулевым. Строка является примером ссылочного типа.
public class Data
{
public string Attribute1 { get; set; }
public string Attribute2 { get; set; }
public string Attribute3 { get; set; }
}
Приведенный выше код, все три значения атрибута не инициализируются и имеют значение NULL. Чтобы назначить значение трем атрибутам при создании нового экземпляра вашего объекта с помощью 'new Data ()', вы можете создать конструктор, который присваивает значение.
public Data()
{
Attribute1 = Attribute2 = Attribute3 = String.Empty();
}
Теперь все атрибуты будут иметь пустое строковое значение. Это означает, что они инициализированы, но не имеют значения.
Типы значений (все, что определено как структура) не могут быть NULL. Примерами этого являются DateTime
, int
, double
, decimal
и т. Д. Значение по умолчанию для числовых типов равно 0. Значение по умолчанию для DateTime
равно DateTime.MinValue
.