C#的问题,怎么在List集合中筛选数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#的问题,怎么在List集合中筛选数据?相关的知识,希望对你有一定的参考价值。
参考技术A方法一: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);
}
}
C# 2个List集合重复数据筛选
List<String> list1 = new List() "0", "1", "23", "31" ;:
List<String> list2 = new List() "0", "1", "5", "9";:
//循环第一个循环
for (int i = 0; i < list1.Count; i++)
// 嵌套循环第二个循环
for(int j=0;j<list2.count;j++)
//把第一个循环的值和第二个进行不分大小写比较 是否相同
if (String.Compare(list1[i], list2, true) == 0)
//如果比较找出了相同的数据就 把 第一个的循环的数据给删除
//想把list1里面list2
List1.Remove(Lista1);
想把list1和list2里面相同的数据给删掉
剩下23,31,5,9 四个数据。请问那位老师帮我改一下
List<string> list2 = new List<string>();
var list = list1.Intersect(list2).ToArray();//交集
foreach(string s in list)
list1.Remove(s);
list2.Remove(s);
以上是关于C#的问题,怎么在List集合中筛选数据?的主要内容,如果未能解决你的问题,请参考以下文章