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

3 に答える 3

6

コレクションをコンストラクターに渡すことで、リストをデータで初期化できます。例えば

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.
}
于 2012-04-27T00:02:38.860 に答える
2
var itemToAdd = context.Items( i => i.Property == "Desired" );  

MyClass myclass = new MyClass() 
{     
    Items = new List<Item>(itemToAdd)  // <--####  Here    
    {         
       new List<Item> () 
       {              
           Property = "New"          
       }
    } 
};
于 2012-04-26T23:53:33.657 に答える
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 };
于 2012-04-26T23:51:39.713 に答える