C#的问题,怎么在List集合中筛选数据?

C#的问题,怎么在List集合中筛选数据?,第1张

方法一: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);

你要另外写的话,可以。先连接数据库,创建SqlDataApter对象,把查到的结果集填充到Datatable里显示、然后再逐个获取Datatable单元格的内容。

或用SqlDataReader来,它是逐行读取数据的,每读一次就把当前行添加到集合里。

sqlhelper这个类是对数据库 *** 作进行封装而已,方便重复使用。你在vs里,右击你的代码 Sqlhelper---转到定义,仔细看它是怎么通过getDataTable()这个函数

获得数据库数据的。原理都是一样的。

string constr = "data source=.database=Goodsuid=123pwd=123"//连接的数据库的信息

SqlConnection conn = new SqlConnection(constr)//创建连接

conn.Open()//打开连接

string sql = "select *from Course"//要执行的sql语句,你改成你的表名

SqlDataAdapter sda = new SqlDataAdapter(sql,conn)

DataTable dt = new DataTable()

sda.Fill(dt)//填充数据到dt

foreach (DataRow row in dt.Rows)

{

list.Add(row["课程编号"].ToString())

}

方法1:首先把2个list统一成结果的集合类型list/list. 直接用list.removeAll(Collection<?>c)/list.retainAll(Collection<?>c)得到要的结果方法2:遍历2个listview,比较A和B然后存入第3个list


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9568287.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存