Перебирая список объектов, проверяя, определены ли их свойства - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть список объектов. Есть ли способ перебрать список и проверить, не определено ли какое-либо из их свойств?

Я пробовал что-то вроде

list.FindAll(p => p.property == null);

но так как желаемое свойство равно double, я получаю предупреждение, что выражение всегда будет иметь значение false.

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Поскольку double не может быть нулевым, вы можете использовать double?.

Тогда, продолжайте свою логику, это null означает, что это не определено

0 голосов
/ 06 ноября 2018

Если свойство не может быть 0. Основываясь на этом ответе на ответ Yojin, самый простой способ будет проверить 0 вместо null.

list.FindAll(p => p.property == 0);

Конечно, если в любой момент свойство может быть равно 0, этого следует избегать. Есть обнуляемый тип, конечно. Объявление вашей собственности будет примерно таким:

public double? MyProperty { get; set; }

Если к свойству ничего не приписано, то по умолчанию оно равно null.

0 голосов
/ 06 ноября 2018

Типы значений никогда не могут быть нулевыми, поэтому в случае высказывания

double x;
Console.WriteLine(x.ToString());

Вы увидите, что '0' будет записано.

Если вы заинтересованы, вы должны проверить https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/value-types

...