Фильтровать данные из коллекции - PullRequest
0 голосов
/ 18 марта 2020

У меня есть коллекция родительского класса. Родительский класс имеет свойство ID и некоторое другое свойство класса. Итак, я хотел бы получить эти значения дочерних свойств на основе Parent ID. Я могу получить элемент коллекции, но мне нужно одно значение из этого элемента. Ниже мой код:

public class Parent
{
    public int Id { get; set; }
    public Child MyChild { get; set; }

}

public class Child
{
    public string abc { get; set; }
    public string xyz { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        var d = new List<Parent>();
        d.Add(new Parent
        {
            Id = 1,
            MyChild = new Child()
            {
                xyz = "XYZ one",
                abc = "ABC one"
            }
        });

        d.Add(new Parent
        {
            Id = 2,
            MyChild = new Child()
            {
                xyz = "XYZ two",
                abc = "ABC two"
            }
        });

        for (int i = 1; i < 2; i++)
        {
            var xyzValueOfParentIdOneValue = d.SingleOrDefault(x => x.Id = 1) // Here, I want to get XYZ property value of Parent ID 1.
        }

    }

}

Ответы [ 3 ]

2 голосов
/ 18 марта 2020

Вы можете использовать это

var xyzValueOfParentIdOneValue = d.SingleOrDefault(x => x.Id == 1)
                                       ?.MyChild
                                       ?.xyz;

if (xyzValueOfParentIdOneValue != null)
{
   ......
}

Или

var foundItem = d.SingleOrDefault(x => x.Id == 1);

if (foundItem != null && foundItem.MyChild != null)
{ 
  var xyzValueOfParentIdOneValue = foundItem.MyChild.xyz;
}

Эти два приведенных выше кода полностью похожи.

2 голосов
/ 18 марта 2020

Так как вы хотите вернуть значение по умолчанию "0", если Parent Id не существует, вы можете использовать

var xyzValueOfParentIdOneValue = d.SingleOrDefault(x => x.Id == idToSearch)?
                                  .MyChild?
                                  .xyz ?? "0";
2 голосов
/ 18 марта 2020

Я думаю, вы просто хотите получить доступ к свойству MyChild Parent, например:

        var parent = d.SingleOrDefault(x => x.Id == 1);
        var xyz = parent.MyChild.xyz;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...