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 = iclistSkip(50)Take(100)ToList();

取前100条,可以写为:

iclist_temp = iclistTake(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);

你这100个值有什么条件吗?感觉你也没说清楚啊,是随便100个值就行了

select top 100 字段名 from 表名

这个语句就可以实现

如果就是前100个我上边的语句已经写出来了

select from (

select row_number() over(partition by buyer   order by 排序字段) rindex , from tablename

) where rindex<=100

row_number() over(partition by 分组字段   order by 排序字段)可实现分组f1-f5后再对每个组进行自定的排序编号,外面再嵌套一层select,直接取排序编号为前100的。

我不是已经回答过了么?这个可以解决你的问题,照着模板来啊,

比如你的f1-f5数据记录为

f1  f1a1

f2  f2a1

f3  f3a1

f4  f4a1

f5  f5a1

f1  f1a2

f2  f2a2

f3  f3a2

f4  f4a2

f5  f5a2

f1  f1a2000

f2  f2a2000

f3  f3a2000

f4  f4a2000

f5  f5a2000

那么他分组排序后取出的数据是

f1  f1a1       1

f1  f1a2       2

f1  f1a2000    2000

f2  f2a1       1

f2  f2a2       2

f2  f2a2000    2000

f3  f3a1

同上

f4  f4a1

同上

f5  f5a1

同上

得出这种数据后,直接取rindex<=100的,每组的前100条数据不就出来了?

select top 100 from 表名 order by 列名 desc (升序asc 降序desc)

你表肯定是根据哪列排序的吧,你要最后100个就根据情况用“升序”还是“降序”排列吧

select是查询的意思

top是指上面的

select top 100意思就是查询前100

order by 列名 desc 意思就是根据列名行降序排列

大概就这样吧 你自己理解下 希望有帮助

<%

'分页sql语句生成代码

Function GetPageSql(TblName,FldName,PageSize,PageIndex,OrderType,StrWhere)

Dim StrTemp,StrSql,StrOrder

'根据排序方式生成相关代码

If OrderType = 0 Then

StrTemp = "> (Select Max([" & FldName & "])"

StrOrder = " Order By [" & FldName & "] Asc"

Else

StrTemp = "< (Select Min([" & FldName & "])"

StrOrder = " Order By [" & FldName & "] Desc"

End If

'若是第1页则无须复杂的语句

If PageIndex = 1 Then

StrTemp = ""

If StrWhere <> "" Then

Strtmp = " Where " & StrWhere

End If

StrSql = "Select Top " & PageSize & " From [" & TblName & "]" & Strtmp & StrOrder

Else '若不是第1页,构造sql语句

StrSql = "Select Top " & PageSize & " From [" & TblName & "] Where [" & FldName & "]" & StrTemp & _

" From (Select Top " & (PageIndex-1) PageSize & " [" & FldName & "] From [" & TblName & "]"

If StrWhere <> "" Then

StrSql = StrSql & " Where " & StrWhere

End If

StrSql = StrSql & StrOrder & ") As Tbltemp)"

If StrWhere <> "" Then

StrSql = StrSql & " And " & StrWhere

End If

StrSql = StrSql & StrOrder

End If

GetPageSql = StrSql '返回sql语句

End Function

%>

分页读取数据,只读取需要显示的数据

如果你用的SQL数据库,用存储过程,需要的话帖上来

除了程序上有要求,需要将WEB服务器和数据库服务器分开

或者把经常使用的数据缓存在内存中,比如使用8GB内存的服务器,将数据库数据全部缓存进去

还有很多技术要加在一起,呵呵

以上就是关于C#的问题,怎么在List集合中筛选数据全部的内容,包括:C#的问题,怎么在List集合中筛选数据、数据库表里假设有几百万条数据,针对某一字段,给出100个值,想从数据库中的相应字段查找有没有这些值、SQL语句修改,截取前100条数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存