繁体   English   中英

检查对象中的任何一个是否为空并继续处理其他对象

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

我在课堂上有一个像下面这样的列表

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; }
}

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

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

    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 方法(对于代码重用很有用):

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...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM