C# C从中具有多个元素的可枚举对象数组中查找精确的字符串类型元素

C# C从中具有多个元素的可枚举对象数组中查找精确的字符串类型元素,c#,.net,object,iteration,ienumerable,C#,.net,Object,Iteration,Ienumerable,我在C中有一个复杂的可枚举对象数组,其中元素可以是多种类型。 当这些是特定类的类型时,我可以应用类型。但是有多个字符串类型的元素,我不能依赖它们的顺序 e、 g.我可以依赖ApplicationState对象元素,如下所示: dto.ApplicationState = application?.Items?.OfType<ApplicationApplicationState>()?.FirstOrDefault().ApplicationState?.Items

我在C中有一个复杂的可枚举对象数组,其中元素可以是多种类型。 当这些是特定类的类型时,我可以应用类型。但是有多个字符串类型的元素,我不能依赖它们的顺序

e、 g.我可以依赖ApplicationState对象元素,如下所示:

dto.ApplicationState = application?.Items?.OfType<ApplicationApplicationState>()?.FirstOrDefault().ApplicationState?.Items
                ?.FirstOrDefault()?.To<multilingualStringField>()?.value?
                .FirstOrDefault().Value.ToString();
我可以应用一些方法来获得我想要的值吗

然而,在基本数组中有两个元素,Items和ItemsElementName,我认为这两个元素基本上是方便的,其中第四个Item元素类型name,在ItemsElementName中提供。不确定这是否有用

下面是VS2019调试器中可枚举对象数组的概述


您可能正在查找Enumerable.Zip。它允许您组合项目和项目SelementName

现在您可以确定哪个值属于哪个字段:valuesByName[BillRate]


您可以轻松地用更具体的类型替换字符串键。

不确定我是否理解您想要的值。是否要获取第n个元素,其中n位于ItemsElementName中BillRate的索引中?实际上,不,我不能依赖第n个元素,因为顺序取决于可用性,它可能会有所不同。我需要一个方法,我可以适用于找到我的BillRate值从项目数组。如果我能从ItemElementName数组中得到BillRate的位置,那么我就可以访问ElementAtOrDefault。感谢您可以通过Array.IndexOfItemsElementName、BillRate获取索引。
var valuesByName = Items
  .Zip(ItemElementName, (i, n) => new KeyValuePair<string,object>(n.ToString(), i)))
  .Where(kv => kv.Value is string)
  .ToDictionary(x => x.Key, x => (string)x.Value);