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
。它允许您组合 Items
和 ItemsElementName
.
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"]
您可以轻松地将字符串键替换为更具体的类型。
我在 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
。它允许您组合 Items
和 ItemsElementName
.
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"]
您可以轻松地将字符串键替换为更具体的类型。