[英]c#: how do I remove an Item inside IEnumerable
我正在制作一个接受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; } }
你不能 IEnumerable
(及其通用的IEnumerable<T>
)仅用IEnumerable<T>
目的-枚举某些集合的内容。 它不提供修改集合的功能。
如果您正在寻找一个提供所有典型方法来修改集合的接口(例如,添加,删除),那么如果需要按索引访问元素,请查看ICollection<T>
或IList<T>
。
或者,如果您的目标是为某些内容提供IEnumerable
,但删除了某些项目,请考虑使用Enumerable.Except()
过滤掉它们( 如枚举 )。
使用while循环在删除时遍历列表。
int i = 0;
while(i < source.Count){
if(canBeRemoved(source[i])){
source.RemoveAt(i);
}else{
i++;
}
}
我能够使用动态从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; } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.