请教C#中的List<T>,筛选list中特定元素的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教C#中的List<T>,筛选list中特定元素的方法相关的知识,希望对你有一定的参考价值。
//Account是账号表类,Trade是交易表类,各表的属性已封装好了
Dictionary<string,Account> accounts=new Dictionary<string,Account>();
List<Trade> trades=new List<Trade>();
public string Take(string code, double money, string memo)
if (!accounts.ContainsKey(code))
return "该账号不存在!";
double balance = accounts[code].Balance - money;
if (balance < 0)
return "取款余额不足!";
accounts[code].Balance -= money;
Trade trade = new Trade();
trade.Code = code;
trade.Money = money;
trade.Date = DateTime.Now;
trade.Memo = memo;
trade.Thistype = TransType.Take;
trades.Add(trade);
return "取款成功!";
我现在是想从这个List对象trades中筛选出多个trade元素,这些trade元素的Code字段全都是"0001",我该用什么方法删除掉?请各位高手指教
这位fnsword朋友,你用trades对象调用FindAll()方法,怎么在方法参数里传递了一个方法的定义啊?看不懂。。。晕
List<Trade> newtrades = trades.FindAll(delegate(Trade p) return p.Code == "0001"; );
要充分利用.net的优势,复杂问题简洁化,简洁不简单……
问题补充:先汗一下,这是匿名函数本回答被提问者采纳 参考技术B 循环查找
删除用
Remove()
或
RemoveAt()
请教C#中的List<T>,删除list中特定元素的方法
//Account是账号表类,Trade是交易表类,各表的属性已封装好了
Dictionary<string,Account> accounts=new Dictionary<string,Account>();
List<Trade> trades=new List<Trade>();
public string Take(string code, double money, string memo)
if (!accounts.ContainsKey(code))
return "该账号不存在!";
double balance = accounts[code].Balance - money;
if (balance < 0)
return "取款余额不足!";
accounts[code].Balance -= money;
Trade trade = new Trade();
trade.Code = code;
trade.Money = money;
trade.Date = DateTime.Now;
trade.Memo = memo;
trade.Thistype = TransType.Take;
trades.Add(trade);
return "取款成功!";
现在我想从这个List对象trades中删除多个trade元素,这些trade元素得Code字段全都是"0001",我该用什么方法删除掉?请各位高手指教
for( int i = trades.Count - 1; i >= 0; --i )
if( trades[i].Code == "0001" )
trades.RemoveAt( i );
参考技术A 首先code是标识不应该相同.你的程序中怎么会有这么多想通的0001?
其次.你得到许多相同的,那就应该遍历删除.不然会造成冗余.
应该在trade.Code = code;的时候去判断trades里面有没有一样的数据.不应该直接add.
以上是关于请教C#中的List<T>,筛选list中特定元素的方法的主要内容,如果未能解决你的问题,请参考以下文章