C#如何jquery移除元素集合中含有某关键字的元素

关于用C#对List&&中去除某元素的问题!_百度知道
关于用C#对List&&中去除某元素的问题!
int i = 0;
while (i & list.Count())
var aa = from tt in list where tt.word == “word”
if(aa.Count() == 4)
list.Remove(list[i])...
我有更好的答案
int&i&=&0;while&(i&&&list.Count()){&&&&var&aa&=&from&tt&in&list&where&tt.word&==&“word”&select&&&&&if(aa.Count()&==&4)&&&{&&&&&&&&string&s1&=&list[i];&&&&&&&&for(int&j=list.Count()-1;j&=0;j--)&&&&&&&&{&&&&&&&&&&&&if&(s1&==&list[j])&&&&&&&&&&&&&&&list.Remove(list[j]);&&&&&&&&}&&&}&&&&else&&&&{&&&&&&&&i++;&&&&}}&思路就是这样,你可以根据自己的需求修改一下
采纳率:50%
输出一个列表中的表项。列表项目的编号从0开始,所以,从0开始循环,直到最后一个,每次循环,使用list.get(i)函数获取列表中的第i个项目,输出。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。新たな始まり
【C#】删除集合里的元素
问题:C#中如果想要删除一个集合中的所有元素,直接for循环边读边删除是不可行的。因为每删除一个元素,后面的元素就会往前排,即它们的索引会向前-1,然后i还是正常的自增,就会跳过下一个元素。
for (int i = 0 ; i & list.C i++ ){
list.RemoveAt[i];
启发:搜了下一,看到了很清楚的解释:
没有更多推荐了,Keep Learning!!!
C#实现在foreach中删除集合中的元素
List&string&
str =&new&List&string&();
str.Add(&&zs&);
str.Add(&ls&);
str.Add(&&ws&&);
foreach(string&s&in&str)
&&&str.Remove(s);
有时候我们在foreach中需要修改或者删除集合
可是这时候却报如下错误:集合已修改;可能无法执行枚举操作。
其实我们简单实现以下就可以实现这个功能
直接上代码如下
public&class&MyClass&T&
&&&&MyClassCollection&T&
collection =&new&MyClassCollection&T&();
&&&&public&IEnumerator
GetEnumerator()
&&&&&&&&return&
&&&&public&void&Remove(T
&&&&&&&&collection.Remove(t);
&&&&public&void&Add(T
&&&&&&&&collection.Add(t);
public&class&MyClassCollection&T&
: IEnumerator
&&&&List&T&
list =&new&List&T&();
&&&&public&object&current
&&&&Random
rd =&new&Random();
&&&&public&object&Current
&&&&&&&&get&{&return&
&&&&int&icout
&&&&public&bool&MoveNext()
&&&&&&&&if&(icout
&= list.Count)
&&&&&&&&&&&&return&false;
&&&&&&&&else
&&&&&&&&&&&&current
= list[icout];
&&&&&&&&&&&&icout++;
&&&&&&&&&&&&return&true;
&&&&public&void&Reset()
&&&&&&&&icout
&&&&public&void&Add(T
&&&&&&&&list.Add(t);
&&&&public&void&Remove(T
&&&&&&&&if&(list.Contains(t))
&&&&&&&&&&&&if&(list.IndexOf(t)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&icout--;
&&&&&&&&&&&&}
&&&&&&&&&&&&list.Remove(t);
public&class&MyItem
&&&&public&string&id
&&&&&&&&get;
&&&&&&&&set;
&&&&public&int&sex
&&&&&&&&get;
&&&&&&&&set;
&&&&public&string&name
&&&&&&&&get;
&&&&&&&&set;
&&&&public&int&age
&&&&&&&&get;
&&&&&&&&set;
  然后我们直接调用一下试验下:
MyClass&MyItem&
myclass =&new&MyClass&MyItem&();
rd =&new&Random();
for&(int&i
= 0; i & 10; i++)
&&&&MyItem
item =&new&MyItem();
&&&&item.age
= rd.Next(1, 80);
&&&&item.id
= rd.Next().ToString();
&&&&item.name
=&&name&&+
rd.Next().ToString();
&&&&item.sex
= rd.Next(0, 1);
&&&&myclass.Add(item);
foreach&(MyItem
item&in&myclass)
&&&&Console.WriteLine(item.name);
&&&&myclass.Remove(item);
Console.Read();
  这段代码就是模拟10条数据 输出信息后直接删除
哈哈& 是不是很简单呢?当然要实现修改或者其他的功能也是类似的
另外IEnumerator接口中的&&public& object Current 为引用类型 所以 如果这里MyItem如果修改为基本类型的话肯定会出现拆箱装箱
如果 如果foreach中是基本类型的话就不要用foreach了 如果需要考虑性能的话。
&源代码下载:https://files.cnblogs.com/files/devgis/TestIEnumerator.rar
没有更多推荐了,C#中List.Clear()方法清除元素的问题-CSDN论坛
C#中List.Clear()方法清除元素的问题
做了个小游戏,定义一个List来存储几个元素,在最后游戏死亡的时候使用List.Clear()来清除List中元素后,再重新开始,但是再重新开始的时候List里还是有以前的元素,不知道这是怎么回事,这个情况在以前写的程序中也遇见过,请高手们讲解下,谢谢!
我的确没有碰到过。。
你一步一步debug看看,应该是你的程序的问题
在清除后元素个数是0,但是开始新的游戏时元素个数却是清楚前的个数加上新的个数了
检查代码,单步跟踪
list用法全解
http://blog.csdn.net/chanya/archive//5572186.aspx
把代码发过来
你可以创建一个自己的Collection类
public&class&MyCollection:List&游戏对象&
&&&&public&new&Add(){...}
吧相关的add,remove,removeat,clear都加上断点,然后看clear后还做什么了。
解决了,谢谢大家,是自己代码的原因
应该是代码原因
回复进击的大白
C#循环删除List中某个元素
根据项目中的需要删除list集合中某些键值对,这就需要做循环处理,但是尝试中出现在问题,使用for 还foreach,在使用foreach运行时报错,提示集合已修改,可能无法执行枚举操作。因为在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从需导致在foreach中删除元素会出现异常。但是使用for循环删除时,数据没有完全删除,存在一部分没有被删除。
Dictionary&string, object& fileds = new Dictionary&string, object&();
fileds.Add(TaskManageConst.PayNumber, streamNumber);
fileds.Add(TaskManageConst.TaskState, TaskState.WaitToCheck);
fileds.Add(TaskManageConst.StateOfPayment, NewPaymentState);
fileds.Add(TaskManageConst.PayTime, DateTime.Now);
fileds.Add(TaskManageConst.PaymentAccountType, payCustomerType);
for (int i = 0; i & fileds.C i++)
if (!allowedList.Contains(fileds.ElementAt(i).Key))
fileds.Remove(fileds.ElementAt(i).Key);
}于是采用for倒序遍历,删除。这是因为当i=1时,满足条件执行删除操作,会移除第一个元素,接着第二个元素会前移到第一个元素的位置,即游标1对应的是第二个元素。接着遍历i=2,也就跳过第二个元素。这就造成部分元素删除。
for (int i = fileds.count -1; i & =0; i--)
if (!allowedList.Contains(fileds.ElementAt(i).Key))
fileds.Remove(fileds.ElementAt(i).Key);
或者在循环删除后 做i--处理,删除一个之后主动减一for (int i = 0; i & fileds.C i++)
if (!allowedList.Contains(fileds.ElementAt(i).Key))
fileds.Remove(fileds.ElementAt(i).Key);
没有更多推荐了,

我要回帖

更多关于 移除list中某个元素 的文章

 

随机推荐