Поиск по переменным вложенных классов

212
30 июня 2017, 05:00

У меня есть основной класс содержащий множество классов. Для примера возьмем несколько:

 public class Data
{
    public Monkeyking MonkeyKing { get; set; }
    public Jax Jax { get; set; }
    public Shaco Shaco { get; set; }
    public Warwick Warwick { get; set; }
    public Xayah Xayah { get; set; }
    public Nidalee Nidalee { get; set; }
    public Zyra Zyra { get; set; }
}

И вот например несколько вложенных классов

 public class Monkeyking
{
    public string title { get; set; }
    public int id { get; set; }
    public string key { get; set; }
    public string name { get; set; }
}
public class Jax
{
    public string title { get; set; }
    public int id { get; set; }
    public string key { get; set; }
    public string name { get; set; }
}
public class Shaco
{
    public string title { get; set; }
    public int id { get; set; }
    public string key { get; set; }
    public string name { get; set; }
}

Можно ли как то реализовать поиск среди всех вложенных классов что бы сравнивать введенное значение с id во вложенных классах и вывести весь класс в котором idсовпадет с введенными данными

Answer 1

У вас неверная структура данных.

Скорее всего, вам нужен не класс, а словарь персонажей:

public class Character
{
    public string Title { get; set; }
    public int Id { get; set; }
    public string Key { get; set; }
    public string Name { get; set; }
}

ну и

string[] names = { "Monkeyking", "Jax", "Shaco", "Warwick", "Xayah", "Nidalee", "Zyra" };
Dictionary<string, Character> Data = names.ToDictionary(n => n, n => new Character());

При этом поиск можно проводить через LINQ:

var keys = Data.Where(kvp => kvp.Value.Id == 1).Select(kvp => kvp.Key);

(В случае, если нужно искать много и часто, стоит проиндексировать по id.)

READ ALSO
КриптоПро.NET SDK работа с ЭЦП

КриптоПро.NET SDK работа с ЭЦП

Как подписать и зашифровать файл используя библиотеку КриптоПроNET SDK имея USB токен? Алг

354
Среда выполнения С#

Среда выполнения С#

Есть desktop приложение на JavaПодумываю перенести его на С#, исходя из того что большинство пользователей будет на Windows

266
Как параллельно выполнять функции на C#?

Как параллельно выполнять функции на C#?

При запросе пользователя я хочу произвести несколько запросов к БД и потом вывести ответНо, если я использую

236
Крестик как в google chrome c# windows form

Крестик как в google chrome c# windows form

Подскажите пожалуйста, возможно ли создать крестик для закрытия вкладок, как в Chrome для Windows Forms (TabPage)

238