我想有一种使用LINQ表达式/查询实现此目的的简便方法,但是如何根据目标结构内部的特定值从所述结构数组中返回一个结构呢?
例如,假设我们有:
enum MyEnum
{
a,
b,
c
}
struct MyStruct
{
MyEnum StructEnum;
int[] StructIntegers;
}
MyStruct[] ArrayOfStructs;
我如何根据MyStruct[]
的值从StructEnum
中找到特定元素?或者更具体地说,是否从此特定结构中获取StructIntegers
数组?
编辑:如果ArrayOfStructs
没有要查找的具有特定枚举的元素该怎么办?首先检查出来的聪明方法是什么?
答案 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);