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

C# To find exact string type element from Enumerable Object Array having Multiple elements in

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

例如我可以依赖 ApplicationApplicationState 对象元素作为:

dto.ApplicationState = application?.Items?.OfType<ApplicationApplicationState>()?.FirstOrDefault().ApplicationState?.Items
                ?.FirstOrDefault()?.To<multilingualStringField>()?.value?
                .FirstOrDefault().Value.ToString();

我可以应用一些方法来获得我想要的值吗?

但是,基本数组中有两个元素,Items 和 ItemsElementName,我认为这主要可以派上用场,其中第 4 个 Item 元素类型名称,在 ItemElementName 中提供。不确定这是否有帮助。

下面是来自 VS 2019 调试器的可枚举对象数组的概述。

您可能正在寻找 Enumerable.Zip。它允许您组合 ItemsItemsElementName.

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);

现在您可以识别哪个值属于哪个字段:valuesByName["BillRate"]

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