繁体   English   中英

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

[英]C# get struct from array based on specific struct member value

我想有一个简单的方法可以使用LINQ表达式/查询来做到这一点,但是如何根据目标结构内部的特定值从所述结构数组中返回一个结构呢?

例如,假设我们有:

enum MyEnum
{
    a,
    b,
    c
}

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

MyStruct[] ArrayOfStructs;

如何根据MyStruct[]StructEnum值查找特定元素? 更具体地说, StructIntegers从此特定结构获取StructIntegers数组?

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

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

这将返回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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM