代码之家  ›  专栏  ›  技术社区  ›  suraj13k

材料需求可用性检查表

  •  0
  • suraj13k  · 技术社区  · 6 年前

    模型:

    MaterialTemplate{
        int id,
        MaterialType materialType,
        int length,
        int width,
        int complexity
    }
    
    Material{
        int id,
        MaterialType materialType,
        int length,
        int width,
        int complexity,
        int saleType
    }
    

    List<MaterialTemplate> requiredMaterialTemplates ;

    我想检查每个所需的材料模板是否在材料表中有2x可用性,其中“2x”是可配置的。

    requiredMaterialTemplates 并使用linq查询逐个检查,但是是否有任何方法可以检查所有 所需材料模板 立即使用linq(1个SQL查询)。

    所需材料模板 .

    所需材料,可用价值为2倍

    MaterialTemplateId:1,MaterialType:"Bronze",Complexity:"Solid"
    MaterialTemplateId:2,MaterialType:"Silver",Complexity:"Solid",Length:10
    

    材料(分贝)

    1,"Bronze",10,5,"Solid","Limited"
    2,"Bronze",20,6,"Solid","Limited"
    3,"Silver",10,5,"Solid","Limited"
    4,"Copper",10,5,"Solid","Limited"
    

    结果应该是

    MaterialTemplateId, Required Count
    1,0
    2,1
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Paplusc    6 年前

    我想你可以用 group by 把你所有的材料都打两次或两次以上。

    from m in Material
    group m by m.MaterialType into grp
    where grp.Count() > 1
    select grp.Key
    
        2
  •  0
  •   Miamy Dan Barrett    6 年前

    如果我明白你的需要:

    from material in availableMaterials
    join template in requiredMaterialTemplates 
      on new { material.materialType, material.length, material.width, material.complexity }
      equals new { template.materialType, template.length, template.width, template.complexity }
    where material.quantity < 2
    select material
    

    我想你已经 List<Material> availableMaterials .