简单问题,我如何能够将ListView上的行数限制为实际包含信息的项目/行数量。我知道如何使用此代码计算项目行
ListView1.Items.Count
但是如何限制listview对项目数量的行数?
答案 0 :(得分:0)
假设一个包含LINQ(3.5+)的.Net版本,你会得到一些非常好的功能,它们有很多帮助。这些适用于任何IQueryable
,包括IList
..
Dim MyList = [Some code to get hundreds of items]
Dim MyShortList = MyList.Take(30)
您还可以使用Skip
...
Dim MyShortListPage2 = MyList.Skip(30).Take(30)
您应该考虑使用实体框架或实现IQueryable
的等价物。这些通过使用延迟处理(即延迟加载)来减少内存开销。
简而言之,如果我使用EF执行以下操作:
Dim Users = DBContext.Set(Of Users)
Users
实际上不会包含数据库中的所有用户,而是包含查询以获取所有用户。如果我做Users.First
,它将针对SQL运行查询以获取第一个用户。相反,我做了Users.Where(function(x) x.Age=30).First
它只会查询第一个年龄为30岁的用户的SQL。
因此,IQueryable允许您使用底层提供程序的强大功能快速削减数据集,而不是在内存中执行此操作。
相反,如果我做了
Dim Users = DBContext.Set(Of Users).ToList()
它会将数据库中的所有用户检索到内存中。 ToList()
迫使这种情况发生。 List
必须存储在本地内存中,IQueryable
不能存储,它可以在最后一刻运行相应的查询,并尽可能少地满足您的请求。
您是否希望这种情况发生取决于用例。