c#:如何删除IEnumerable中的Item

plu*_*ang 0 c#

我正在制作一个自定义网格,接受IEnumerable作为Itemsource.但是我在删除方法期间无法删除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
    //goes here ..
}

public class MyData { public string Data { get; set; } }
Run Code Online (Sandbox Code Playgroud)

Jon*_*art 7

你不能. IEnumerable(及其通用对应物IEnumerable<T>)仅用于 - 枚举某些集合的内容.它没有提供修改集合的工具.

如果您正在寻找提供修改集合的所有典型方法的接口(例如,添加,删除),那么请查看ICollection<T>或者IList<T>是否需要按索引访问元素.

或者,如果您的目标是提供IEnumerable某些内容,但删除了某些项目,请考虑Enumerable.Except()将其过滤掉(因为它是枚举的).