NullReferenceException с linq в предложении where - PullRequest
0 голосов
/ 05 мая 2019

Я пишу программу, которая использует Entity Framework и linq. Проблема в запросе arInvArea и особенно в предложении where. В WithSwimmingPool есть нулевые значения, и поэтому я получаю исключение нулевой ссылки. Как я могу поймать такое исключение в предложении where. Другие решения в Stackoverflow мне не помогли. Спасибо

private ObjectContactsRow CreateNewRow(AreaInventory arInv)
{
    // Here in the where clause I get exception ! WithSwimmingPool is from type bool
    var arInvArea = arInv.Area.Where(p => p.WithSwimmingPool)
                              .Select(p => p.Units(ReportDate))
                              .FirstOrDefault();

    return new ObjectContactsRow()
               {
                   areaSize =  arInvArea  
               };
}

public partial class Area 
{
    public bool WithSwimmingPool => AreaArt.AreaUnit_ID == "SWMP";
}

public class ObjectContactsRow 
{
    public double areaSize { get; set; }

    public override object[] GetExcelRow()
    {        
        var index = 0;

        Row[index++] = areaSize;

        return Row;
    }
}

1 Ответ

0 голосов
/ 05 мая 2019

Вы должны изменить свой запрос на:

var arInvArea = arInv.Area.Where(p => p != null && p.WithSwimmingPool)
                          .Select(p => p.Units(ReportDate))
                          .FirstOrDefault();

Ваша коллекция может содержать NULL индексов, что приводит к p == null в вашем запросе.

Если вы случайно используете C # 8, вы можете включить nullable, включив в свой код #nullable enable. Затем это указывает на все сегменты кода с нулевой ссылочной вероятностью ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...