C#根据特定的结构成员值从数组中获取结构

时间:2018-10-24 19:35:19

标签: c# linq struct

我想有一种使用LINQ表达式/查询实现此目的的简便方法,但是如何根据目标结构内部的特定值从所述结构数组中返回一个结构呢?

例如,假设我们有:

enum MyEnum
{
    a,
    b,
    c
}

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

MyStruct[] ArrayOfStructs;

我如何根据MyStruct[]的值从StructEnum中找到特定元素?或者更具体地说,是否从此特定结构中获取StructIntegers数组?

编辑:如果ArrayOfStructs没有要查找的具有特定枚举的元素该怎么办?首先检查出来的聪明方法是什么?

2 个答案:

答案 0 :(得分:4)

int[] ints = ArrayOfStructs.FirstOrDefault(
                   x => x.StructEnum == ENUMTYPE
             )?.StructIntegers;

答案 1 :(得分:2)

这将返回所有MyEnum值为a的项目:

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

这将从该结果返回StructIntegers的所有数组:

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

这将以{flat}结构而不是数组的StructIntegers形式返回所有IEnumerable

IEnumerable<int> intResults = structResults.SelectMany(s=>s.StructIntegers);