检查列表内部对象的最佳方法为空

问题描述

我正在根据来自输入的列表以及如下所示的字符串形成一个对象。

public static LibrarySourceTableInput CreateLibrarySourceTableInput<T>(List<T> libraries,string mechanicalLibraryName)
    where T : ISourceOfData
{
    return new LibrarySourceTableinput()
    {
        LibrarySourceRowInputs = libraries?.Select(l => new LibrarySourceRowinput()
        {
            LibrarySourceId = l.Id,SourceOfDataId = l.sourceOfData.Id
        }).ToList() ?? new(),MappedLibrarySource = mechanicalLibraryName
    };        
}

在这里面临不同的问题,我的库计数为 1,但内部对象为空,例如在下面的图像库中计数为 1 并且为空,

enter image description here

在这种情况下,我收到了上述代码的空引用异常,有人可以帮助解决如何避免空异常的问题。非常感谢。

解决方法

您可以在选择之前执行 where 查询。

LibrarySourceRowInputs = libraries?.Where(l => l != null)
                                   .Select(l => l => new LibrarySourceRowInput()
                                              {
                                               LibrarySourceId = l.Id,SourceOfDataId = l.SourceOfData.Id
                                              }).ToList() ?? new();