检查是否有任何一个对象为空并继续其他

check whether any one of the object is null and proceed with other

我在 class

中有一个如下所示的列表
public class DesignHubProject{
   public List<ProjectObject<HydronicSystem>> HydronicSystems { get; set; }
}

这是 ProjectObject<HydronicSystem> 拿着的东西

public class ProjectObject<T>
{
    public Guid? Id { get; set; }
    public T OriginalObject { get; set; }
    public T ModifiedObject { get; set; }
}

现在我需要查找修改后的对象是否为 null 我需要继续处理原始对象,或者如果它不为 null 使用修改后的对象它自己。

为此,我正在循环遍历对象,如下所示

    foreach(var item in designHubProject.HydronicSystems)
    {
           // here i need to check for modified object is null proceed with original object and 
            // if original object is null proceed with modified object           
    }

我怎样才能检查这个对象,请问有没有人对此提出任何想法,我将不胜感激。

提前致谢。

一种方法是使用Extension method(对代码重用很有用):

public static class ProjectObjectExtension
{
    public static T GetObject<T>(this ProjectObject<T> projectObject)
        => projectObject.ModifiedObject ?? projectObject.OriginalObject;

    // or like @MichaelRandall suggests in his answer
    public static T GetObjectMichaelRandallWay<T>(this ProjectObject<T> projectObject)
        => EqualityComparer<T>.Default.Equals(projectObject.ModifiedObject, default) ?
            projectObject.OriginalObject :
            projectObject.ModifiedObject;
}

然后就调用这个方法:

foreach(var item in designHubProject.HydronicSystems)
{
    var obj = item.GetObject();
    // rest of your code...
}

或者在循环中调用这段代码:

foreach(var item in designHubProject.HydronicSystems)
{
    var obj = item.ModifiedObject ?? item.OriginalObject;
    // rest of your code...
}

您也可以使用 LINQ .Select() 方法:

foreach(var obj in designHubProject.HydronicSystems.Select(p => p.ModifiedObject ?? p.OriginalObject))
{
    // rest of your code...
}