C # получить структуру из массива на основе определенного значения члена структуры - PullRequest
0 голосов
/ 24 октября 2018

Я думаю, что есть простой способ сделать это с помощью выражений / запросов LINQ, но как можно вернуть структуру из массива указанных структур, основываясь на конкретном значении, найденном внутри целевой структуры?

Например, скажем, у нас было:

enum MyEnum
{
    a,
    b,
    c
}

struct MyStruct
{
    MyEnum StructEnum;
    int[] StructIntegers;
}

MyStruct[] ArrayOfStructs;

Как бы я нашел из MyStruct[] определенный элемент на основе его значения StructEnum?Или, более конкретно, получить массивы StructIntegers из этой конкретной структуры?

РЕДАКТИРОВАТЬ: Что если ArrayOfStructs не имеет каких-либо элементов, которые имеют конкретное перечисление, которое я ищу?Какой умный способ проверить это первым?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Это вернет все элементы, которые имеют MyEnum значение a:

IEnumerable<MyStruct> structResults = arrayOfStructs.Where(a=>a.StructEnum == MyEnum.a);

Это вернет все массивы StructIntegers из этого результата:

IEnumerable<int[]> intArrayResults = structResults.Select(s=>s.StructIntegers);

Это вернет все StructIntegers в виде "плоской" структуры, а не IEnumerable массива:

IEnumerable<int> intResults = structResults.SelectMany(s=>s.StructIntegers);
0 голосов
/ 24 октября 2018
int[] ints = ArrayOfStructs.FirstOrDefault(
                   x => x.StructEnum == ENUMTYPE
             )?.StructIntegers;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...