我是否可以使用现有项初始化类中的列表?
我基本上想要实例化一个类对象,并从现有项目和新项目中初始化一个包含已有元素的列表。
public class Item
{
public string Property {get; set;}
}
public class MyClass
{
public virtual IEnumerable<Item> Items {get; set;}
}
var itemToAdd = context.Items( i => i.Property == "Desired" );
MyClass myclass = new MyClass()
{
Items = new List<Item>()
{
new List<Item> (),
{
Property = "New"
},
// Would like itemToAdd to be added here when I create a new List.
}
};
答案 0 :(得分:5)
您可以通过将集合传递给构造函数来初始化包含数据的列表。例如
var itemToAdd = context.Items( i => i.Property == "Desired" );
MyClass myclass = new MyClass()
{
Items = new List<Item>(itemToAdd) // You can pass any collection of IEnumerable here.
}
答案 1 :(得分:1)
var itemToAdd = context.Items( i => i.Property == "Desired" );
MyClass myclass = new MyClass()
{
Items = new List<Item>(itemToAdd) // <--#### Here
{
new List<Item> ()
{
Property = "New"
}
}
};
答案 2 :(得分:0)
当然,您只需将Add
方法和IEnumerable添加到您的班级
class InitEx<T> : IEnumerable<T>
{
List<T> _data = new List<T>();
public IEnumerator<T> GetEnumerator()
{
return _data.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return _data.GetEnumerator();
}
public void Add(T i)
{
_data.Add(i);
}
}
使用示例
var ie = new InitEx<int> { 1, 2, 3 };