list筛选出指定数据,excel筛选指定数据
请教C#中的List,筛选list中特定元素的方法
简单的掉渣:
ListTrade newtrades = trades.FindAll(delegate(Trade p) { return p.Code == "0001"; });
要充分利用.net的优势,复杂问题简洁化,简洁不简单……
问题补充:先汗一下,这是匿名函数
怎样在list里面取出我想要得特定数据??
list没有找特定条件取出对象的方法 list只能按游标取
建议用hasmap 那样就可以取出特定的对象了
C#的问题,怎么在List集合中筛选数据?
方法一:Linq
ChannelList就是一个List类型的数据,IsOpen是其元素的属性
channelCount=(fromchannelinDevicesManager.Instance.CurrentDevice.ChannelList
wherechannel.IsOpen
groupchannelbychannel.ChannelID).Count();
方法二:泛型委托Predicate<T>
publicdelegateboolPredicate<inT>(
Tobj
)
方法三、
///<summary>
///筛选运送方式
///</summary>
///<paramname="list">运送方式集合</param>
///<paramname="strType">运送方式</param>
///<returns></returns>
privateList<FeeRuleDto>selectList(List<FeeRuleDto>list,stringstrType)
{
returnlist.FindAll(delegate(FeeRuleDtoinfo){
if(info.DeliveryType.ToString()==strType)
{
returntrue;
}
else{
returnfalse;
}
});
}
方法四、
使用List<T>获取数据库表的时候,每次用户操作都重新访问数据库,然后返回List<T>,会严重影响程序运行效率的方式,其实List<T>自带有筛选的方法,把想要的数据筛选到另一个List<T>中,不用重新访问数据库,直接筛选后绑定控件显示即可。
示例如下:
publicNumberModelcurrentmark;
publicMainFrmmainFrm;
privateList<GoodsModel>goodslist;
privateList<GoodsKindModel>goodskindlist;
privatevoidlstgoodkind_SelectedIndexChanged(objectsender,EventArgse)
{
try
{
if(lstgoodkind.SelectedValue.ToString()!="XY.Model.GoodsKindModel")
{
stringid=lstgoodkind.SelectedValue.ToString();
stringkname=lstgoodkind.Text;
if(kname!="全部")
{
List<GoodsModel>glist=goodslist.FindAll(delegate(GoodsModelp){returnp.GoodsKind==kname;});
bindgoods(dgvgoods,glist);
}
else
{
bindgoods(dgvgoods,goodslist);
}
}
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
}
}
privatevoidbtnAdd_Click(objectsender,EventArgse)
{
try
{
stringgid=dgvgoods.Rows[dgvgoo
例如:跳过List前50条,然后取100条,可写为:
iclist_temp、iclist都为List类型
iclist_temp = iclist.Skip(50).Take(100).ToList();
取前100条,可以写为:
iclist_temp = iclist.Take(100).ToList();
ds.SelectedRows[0].Index].Cells["goodsid"].Value.ToString();
GoodsModelgoods=goodslist.Find(delegate(GoodsModelp){returnp.ID==gid;});
XY.BLL.ConsumeBll.Add(goods,currentmark,mainFrm.user);
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
}
}
java中 如何从LIST 查找指定元素的位置
//先用contains判断是否有该元素
if(list集合.contains(对象)){
list集合.indexOf(对象名);
}
因为List 是一个元素有序的、可以重复、可以为 null?的集合;
所以;
indexOf可以获取元素出现的第一个位置的引索,与之相反的是lastlndexOf获取元素最后出现的位置引索,如果集合中没有该元素则返回-1,其原理都是利用equals方法配合历遍来判断。
扩展资料:
C++中list用法详解
.1list中的构造函数:
list() 声明一个空列表;
list(n) 声明一个有n个元素的列表,每个元素都是由其默认构造函数T()构造出来的
list(n,val) 声明一个由n个元素的列表,每个元素都是由其复制构造函数T(val)得来的
list(n,val) 声明一个和上面一样的列表
list(first,last) 声明一个列表,其元素的初始值来源于由区间所指定的序列中的元素
如何快速从list中查找一条数据
比如,你可以从中间的某个位置开始找,未必要从头开始找啊。
第二个思路,你可以把list 放进hashtable,hashtable查找的效率要比从头找要高。
还有,我个人感觉那个list的get(index),就是从头找的吧
hashtable的查找代码
public virtual bool ContainsKey(object key)
{
uint num;
uint num2;
Hashtable.bucket bucket;
if (key == null)
{
throw new ArgumentNullException("key", Environment.GetResourceString("ArgumentNull_Key"));
}
Hashtable.bucket[] buckets = this.buckets;
uint num3 = this.InitHash(key, buckets.Length, out num, out num2);
int num4 = 0;
int index = (int) (num % buckets.Length);
do
{
bucket = buckets[index];
if (bucket.key == null)
{
return false;
}
if (((bucket.hash_coll 0x7fffffff) == num3) this.KeyEquals(bucket.key, key))
{
return true;
}
index = (int) ((index + num2) % ((ulong) buckets.Length));
}
while ((bucket.hash_coll 0) (++num4 buckets.Length));
return false;
}