2012-04-26 3 views
1

Есть ли способ инициализировать список в классе с существующими элементами?Создавать объект класса и инициализировать список

В основном я хотел бы создать экземпляр объекта класса и инициализировать список с некоторыми элементами, уже входящими в него из существующих и новых элементов.

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. 
    } 
}; 

ответ

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. 
} 
+0

Что будет синтаксис, если я просто хочу передать один элемент? – khaihon

+0

Тогда вы, вероятно, не будете использовать конструктор. Вы оставите его пустым и вызовите Items.Add (itemToAdd) после инициализации. Однако код «context.Items (i => i.Property ==« Желаемый »); будет возвращать коллекцию, даже если в ней есть только один элемент. – nmaait

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 }; 
+0

... Я думаю, что я прочитал его вопрос неправильно - ха-ха. ah well :) оставив его для потомков – payo

1
var itemToAdd = context.Items(i => i.Property == "Desired"); 

MyClass myclass = new MyClass() 
{  
    Items = new List<Item>(itemToAdd) // <--#### Here  
    {   
     new List<Item>() 
     {    
      Property = "New"   
     } 
    } 
}; 
Смежные вопросы