我在C#中有一个复杂的可枚举对象数组,其中的元素可以是多种类型。如果这些是特定类的类型,我可以应用OfType()。但是有多个string类型的元素,我不能依赖它们的顺序。
例如,我可以依赖于ApplicationApplicationState对象元素,如:
dto.ApplicationState = application?.Items?.OfType<ApplicationApplicationState>()?.FirstOrDefault().ApplicationState?.Items
?.FirstOrDefault()?.To<multilingualStringField>()?.value?
.FirstOrDefault().Value.ToString();我可以应用一些方法来获得我想要的值吗?
但是,基本数组中有两个元素,Items和ItemsElementName,我认为这两个元素基本上可以派上用场,其中ItemElementName中提供了第4个Item元素类型名称。不确定这是否有帮助。
下面是VS 2019调试器中可枚举对象数组的概述。



发布于 2019-09-10 01:40:42
您可能正在寻找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"]
您可以轻松地将字符串键替换为更具体的类型。
https://stackoverflow.com/questions/57857623
复制相似问题