当前位置:编程学习 > C#/ASP.NET >>

从集合中提取符合条件的记录

List<string> invoiceNoList = new List<string>();
 foreach (InvoiceAccountGoodsGather_Detail detail in Dmo.GoodsGatherDetails)
{
  if (invoiceNoList.IndexOf(detail.Invoice_NO) == -1)
  {
      invoiceNoList.Add(detail.Invoice_NO);
  }
}

现在需要将过滤条件从一个(Invoice_No),添加到多个(3个),这三个都是detail已经有的属性(LoadTime,ArriveTime,AccountingUnit_ID).
--------------------编程问答-------------------- private void FillInvoiceNoList(List<BigBuyerPreOrder_Detail> list)
    {
      if (Dmo.GoodsDetails.Count == 0)
      {
        throw new ApplicationException("没有内容可供创建订单!");
      }
      list.Add(Dmo.GoodsDetails[0]);

      foreach (BigBuyerPreOrder_Detail detail in Dmo.GoodsDetails)
      {
        int i = 0;
        int biao = 0;
        if (list.Count > 0)
        {
          for (int j = 0; j < list.Count; j++)//如果集合不为空,看里面是否存在当前记录
          {
            if (detail.AccountingUnit_ID == list[j].AccountingUnit_ID && detail.LoadTime == list[j].LoadTime && detail.ArriveTime == list[j].ArriveTime)
            {
              biao = 1;
            }
          }
        }

        //如果当前记录在集合中,不重复(符合条件),将它们加入集合中  (有可能出现,123,213,123,213,这时就要过滤)
        if (detail.AccountingUnit_ID != list[i].AccountingUnit_ID || detail.LoadTime != list[i].LoadTime || detail.ArriveTime != list[i].ArriveTime)
        {
          if (biao == 0)  //过滤掉有可能的重复项
          {
            list.Add(detail);
            i++;
          }
        }
      }   
    } --------------------编程问答-------------------- --------------------编程问答-------------------- 用dictionary,把那三个字段LoadTime,ArriveTime,AccountingUnit_ID组成一个字符串作为一个Key,detail对象作为Value保存进去,检查是否存在时,detail是否存在时,不需要循环,只需要先根据当前detail生成一个key,然后使用这个key直接检查dictionary就可以了。 --------------------编程问答-------------------- 帮你顶,顺便打一个 c#交流群广告59714431
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,