C# 的List<T>筛选数据填充到另一个List<T>
2016-02-05 16:37
423 查看
在使用List<T>获取数据库表的时候,每次用户操作都重新访问数据库,然后返回List<T>,会严重影响程序运行效率的方式,其实List<T>自带有筛选的方法,把想要的数据筛选到另一个List<T>中,不用重新访问数据库,直接筛选后绑定控件显示即可。
示例如下:
public NumberModel currentmark;
public MainFrm mainFrm;
private List<GoodsModel> goodslist;
private List<GoodsKindModel> goodskindlist;
private void lstgoodkind_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (lstgoodkind.SelectedValue.ToString() != "XY.Model.GoodsKindModel")
{
string id = lstgoodkind.SelectedValue.ToString();
string kname = lstgoodkind.Text;
if (kname != "全部")
{
List<GoodsModel> glist = goodslist.FindAll(delegate(GoodsModel p) { return p.GoodsKind == kname; });
bindgoods(dgvgoods, glist);
}
else
{
bindgoods(dgvgoods, goodslist);
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
string gid = dgvgoods.Rows[dgvgoods.SelectedRows[0].Index].Cells["goodsid"].Value.ToString();
GoodsModel goods = goodslist.Find(delegate(GoodsModel p) { return p.ID == gid; });
XY.BLL.ConsumeBll.Add(goods, currentmark, mainFrm.user);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
示例如下:
public NumberModel currentmark;
public MainFrm mainFrm;
private List<GoodsModel> goodslist;
private List<GoodsKindModel> goodskindlist;
private void lstgoodkind_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (lstgoodkind.SelectedValue.ToString() != "XY.Model.GoodsKindModel")
{
string id = lstgoodkind.SelectedValue.ToString();
string kname = lstgoodkind.Text;
if (kname != "全部")
{
List<GoodsModel> glist = goodslist.FindAll(delegate(GoodsModel p) { return p.GoodsKind == kname; });
bindgoods(dgvgoods, glist);
}
else
{
bindgoods(dgvgoods, goodslist);
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
string gid = dgvgoods.Rows[dgvgoods.SelectedRows[0].Index].Cells["goodsid"].Value.ToString();
GoodsModel goods = goodslist.Find(delegate(GoodsModel p) { return p.ID == gid; });
XY.BLL.ConsumeBll.Add(goods, currentmark, mainFrm.user);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}