如何使用新对象填充集合,从另一个集合复制属性

时间:2014-11-29 15:01:07

标签: c# collections ienumerable

我们说我有两节课:

public class Foo {    
    int Id { get; set; }
    string Name { get; set; }
    string Type { get; set; }    
}

栏:

public class Bar {
    string Name { get; set; }
    string Type { get; set; }
} 

因此,Bar不需要Id属性。我想要做的是从现有的bar个对象集合中创建一个新的Foo个对象集合 - 应该为每个Bar创建一个Foo。每个Bar都会有NameType来自Foo

我知道这需要看起来像这样,但不太确定如何完成它:

IEnumerable <Foo> foos = queryResults; //I'll get my foo's with a LINQ query
IEnumerable <Bar> bars = new IEnumerable<Bar>();

foreach (Foo f in foos) {
    //create a new Bar and add it to bars
} 

请指出我正确的方向!

2 个答案:

答案 0 :(得分:0)

您可以使用Linq查询执行此操作:

IEnumerable <bar> bars = foos.Select(x => new bar{Name = x.Name, Type = x.Type});

答案 1 :(得分:0)

使用List<Bar>代替IEnumerable <Bar>,并使用其构造函数分配Bar的属性,如下所示

IEnumerable <Foo> foos = queryResults; //I'll get my foo's with a LINQ query
List<Bar> bars = new List<Bar>();

foreach (Foo f in foos) {
    bars.Add(new Bar() { Name = f.Name, Type = f.Type });
}