проверить, является ли какой-либо из объектов нулевым, и перейти к другим - PullRequest
0 голосов
/ 10 марта 2020

У меня есть список, подобный приведенному ниже, в классе

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           
    }

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

Заранее спасибо.

1 Ответ

3 голосов
/ 10 марта 2020

Одним из способов является использование метода расширения (полезно для повторного использования кода):

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

Или просто вызовите этот код в вашем l oop:

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...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...