通过加入提高Linq性能

时间:2018-04-18 07:34:01

标签: c# visual-studio linq

我有一个Linq,它需要花费2-3分钟才能获得8000个数据。 有没有人可以帮我改进我的Linq这个过程。

self.storyboard

1 个答案:

答案 0 :(得分:0)

尝试类似的东西:

var listOP = (from f in db.T_COLLECT_OP_DTL
              from ii in db.T_SETUP_UNIT
              join g in db.T_COLLECT_OP_DTL_KIMPER on new { A = f.PTDHCARD_ID, B f.PRODUCTION_DATE, C = f.SHIFT } equals new { A = g.PTDHCARD_ID, B = g.PRODUCTION_DATE, C = g.SHIFT}
              join h in db.M_PRODUCT_MODEL on g.MODEL equals h.MODEL_CODE
              join i in db.M_EQUIPMENT on new {A = ii.EQUIPMENT_ID, B = h.PRODUCT_MODEL_ID} equals new {A = i.EQUIPMENT_ID, B = i.PRODUCT_MODEL_ID}
              let kimperid = (from codk in g
                              select codk.KIMPER_ID).Max()
              where f.PRODUCTION_DATE == prodDate 
              && ( (f.SHIFT == shifts || f.SHIFT == shift) )
              && ii.PRODUCTION_DATE == fsu
              && ii.SHIFT == fsh
              && ii.CURRENT_DELAY != "Breakdown"
              select new
                      {
                          f.OPERATOR_ID,
                          f.PRODUCTION_DATE,
                          f.SHIFT,
                          g.MODEL,
                          g.KIMPER_ID,
                          g.EXP_UNIT,
                          i.UNIT_NO
                      }).ToList();