var rows = from rPOTitle in dataSetOrder_Produce.POTitle
           from rAgent in dataSetOrder_Produce.Agent
           from rCustomer in dataSetOrder_Produce.Customer
           from rPODetail in dataSetOrder_Produce.PODetail
           from rPOColor in dataSetOrder_Produce.POColor
           where (rPOTitle.AutoNo == rPODetail.TitleAutoNo) &&
                 (rPODetail.AutoNo == rPOColor.DetailAutoNo) &&
                 (rPODetail.ShipmentDate == Convert.ToDateTime("2007-6-10 0:00:00")) &&
                 (rPOTitle.AgentAutoNo == rAgent.AutoNo) &&
                 (rPOTitle.CustomerAutoNo == rCustomer.AutoNo)
                 select new
                       {
                           PONo = rPOTitle.PONo,
                           HisCount = rPOColor.HisCount,
                           ShipmentDate = rPODetail.ShipmentDate,
                           AgentName = rAgent.AgentName,
                           CustomerCode = rCustomer.CustomerCode
                       };
            
            foreach (var row in rows)
            {
                dataSetOrder_Produce.OrderMaster.Rows.Add(row.PONo,
                                                          row.HisCount,
                                                          row.ShipmentDate,
                                                          row.AgentName,
                                                          row.CustomerCode
                                                          );
                
            }有五张表,第张表都有万几笔数据...我这样写的查询不知道是否得当...慢得厉害...
请高人指点...

解决方案 »

  1.   

    多表连接用join语句,不要用where=
      

  2.   

    像有AutoNo或AutoNo后缀的都是key来的
    像rPOTitle.AutoNo 就是对应的 rPODetail.TitleAutoNo
    谢谢...
      

  3.   

    var rows = from rPOTitle in dataSetOrder_Produce.POTitle
               join rAgent in dataSetOrder_Produce.Agent
               on rPOTitle.AgentAutoNo equals rAgent.AutoNo
               join rCustomer in dataSetOrder_Produce.Customer
               on rPOTitle.CustomerAutoNo equals rCustomer.AutoNo
               join rPODetail in dataSetOrder_Produce.PODetail 
               on rPOTitle.AutoNo equals rPODetail.TitleAutoNo
               join rPOColor in dataSetOrder_Produce.POColor
               on rPODetail.AutoNo equals rPOColor.DetailAutoNo            where (rPODetail.ShipmentDate == Convert.ToDateTime("2007-6-10 0:00:00"))           select new
               {
                  PONo = rPOTitle.PONo,
                  HisCount = rPOColor.HisCount,
                  ShipmentDate = rPODetail.ShipmentDate,
                  AgentName = rAgent.AgentName,
                  CustomerCode = rCustomer.CustomerCode
                  };
               foreach (var row in rows)
               {
                        dataSetOrder_Produce.OrderMaster.Rows.Add(row.PONo,
                                                                  row.HisCount,
                                                                  row.ShipmentDate,
                                                                  row.AgentName,
                                                                  row.CustomerCode
                                                                  );
                    }
    不知道这样写对否...
    请指点...
    谢谢...