方法一: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 f1a1f2 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条数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)