C#里 List 筛选是很简单的事情,不用自已写循环去遍历,利用.net的特性 list.FindAll 可以很方便的实现。
/// <summary>
/// 根据匹配条件获得子列表
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
private List<BaseInfo> selectList(List<BaseInfo> list)
{
string name = txtName.Text.Trim();
string nation = txtNation.Text.Trim();
return list.FindAll(delegate(BaseInfo info)
{
if ((string.IsNullOrEmpty(name) || info.Name.IndexOf(name) != -1) && (string.IsNullOrEmpty(nation) || info.Nation.IndexOf(nation) != -1))
{
return true;
}
else
{
return false;
}
});
}
/// <summary>
/// 从列表中获得分页数据
/// </summary>
/// <param name="list"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
private List<BaseInfo> getPageData(List<BaseInfo> list, int pageIndex, int pageSize)
{
return list.FindAll(delegate(BaseInfo info)
{
int index = list.IndexOf(info);
if (index >= (pageIndex - 1) * pageSize && index < pageIndex * pageSize)
{
return true;
}
else
{
return false;
}
});
}