0

Itemsource として IEnumerable を受け入れるカスタム グリッドを作成していました。ただし、削除メソッド中に itemsource 内のアイテムを削除できませんでした。以下のコードを使用して私を助けることができますか?

static void Main(string[] args)
{
    List<MyData> source = new List<MyData>();
    int itemsCount = 20;
    for (int i = 0; i < itemsCount; i++)
    {
       source.Add(new MyData() { Data = "mydata" + i });
    }

    IEnumerable mItemsource = source;
    //Remove Sample of an mItemSource
    //goes here ..
}

public class MyData { public string Data { get; set; } }
4

3 に答える 3

7

できません。 IEnumerable(およびその一般的な対応するIEnumerable<T>)は、まさにそのためのものです-いくつかのコレクションの内容を列挙します。コレクションを変更する機能はありません。

コレクションを変更する一般的な手段 (例: 追加、削除) をすべて提供するインターフェイスを探している場合は、ICollection<T>またはIList<T>インデックスで要素にアクセスする必要がある場合を参照してください。

または、目標がIEnumerable何かに を提供することであるが、いくつかの項目が削除されている場合は、Enumerable.Except()それらを除外することを検討してください (列挙されているため)。

于 2012-08-08T02:30:15.317 に答える
-2

動的を使用してItemsourceからItemを削除できました

    static void Main(string[] args)
    {

        List<MyData> source = new List<MyData>();
        int itemsCount = 20;
        for (int i = 0; i < itemsCount; i++)
        {
            source.Add(new MyData() { Data = "mydata" + i });
        }

        IEnumerable mItemsource = source;

        //Remove Sample of an mItemSource

        dynamic d = mItemsource;
        d.RemoveAt(0);

        //check data
        string s = source[0].Data;
    }
    public class MyData { public string Data { get; set; } }
于 2012-08-08T06:22:52.573 に答える