首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将IEnumerable<KeyValuePair<string、IEnumerable<ClassA>>> objOld键入IEnumerable<KeyValuePair<string、IEnumerable<ClassB>>> objNew?

如何将IEnumerable<KeyValuePair<string、IEnumerable<ClassA>>> objOld键入IEnumerable<KeyValuePair<string、IEnumerable<ClassB>>> objNew?
EN

Stack Overflow用户
提问于 2020-04-07 09:39:58
回答 2查看 167关注 0票数 1

我有一个对象IEnumerable<KeyValuePair<string, IEnumerable<ClassA>>> objOld;,我想把它转换成IEnumerable<KeyValuePair<string, IEnumerable<ClassB>>> objNew;

ClassA和ClassB都有相同的对象

代码语言:javascript
复制
public class ClassA
{ `public string str1 { get; set; }
    public string str2 { get; set; } 
    public int newNum { get; set; } `
}

public class ClassB
{ `public string str1 { get; set; }
    public string str2 { get; set; } 
    public int newNum { get; set; } `
}

我试着跟随,但它正在产生异常。

代码语言:javascript
复制
objNew = objOld.Cast<IEnumerable<KeyValuePair<string, IEnumerable<ClassB>>>>();

请让我知道可能的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-07 09:46:48

为此,您应该两次使用Select方法。第一次将每个KeyValuePair映射到新的,第二次将内部IEnumerable<ClassA>映射到IEnumerable<ClassB>。无法将ClassA实例直接转换为ClassB,因为类是不同的。因此,您应该根据每个ClassB实例的属性手动创建ClassA实例。

代码语言:javascript
复制
IEnumerable<KeyValuePair<string, IEnumerable<ClassB>>> objNew = objOld.Select(o =>
    new KeyValuePair<string, IEnumerable<ClassB>>(o.Key, o.Value.Select(a => new ClassB
    {
        str1 = a.str1,
        str2 = a.str2,
        newNum = a.newNum
    })));
票数 3
EN

Stack Overflow用户

发布于 2020-04-07 09:44:39

仅仅因为两个类具有相同的成员,并不意味着任何继承关系。与其将转换为另一个,不如为每个A创建新的B实例。

代码语言:javascript
复制
var result = myInput.ToDictionary(x => x.Key, x => x.Select(y => new ClassB { 
        str1 = y.str1, 
        str2 = y.str2, 
        newNum = y.newNum 
    })
);

或者如果你真的想要一个KeyValuePair的列表

代码语言:javascript
复制
var result = myInput.Select(x => 
    new KeyValuePair<string, IEnumerable<ClassB>>(x.Key, x => x.Select(y => new ClassB { 
        str1 = y.str1, 
        str2 = y.str2, 
        newNum = y.newNum 
    })
));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61077032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档