限制列表视图中的行数

时间:2014-01-12 16:10:42

标签: vb.net

简单问题,我如何能够将ListView上的行数限制为实际包含信息的项目/行数量。我知道如何使用此代码计算项目行

ListView1.Items.Count

但是如何限制listview对项目数量的行数?

1 个答案:

答案 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不能存储,它可以在最后一刻运行相应的查询,并尽可能少地满足您的请求。

您是否希望这种情况发生取决于用例。