Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# linq查询以从组中选择前3名,并获得所选组的平均值_C#_Linq - Fatal编程技术网

C# linq查询以从组中选择前3名,并获得所选组的平均值

C# linq查询以从组中选择前3名,并获得所选组的平均值,c#,linq,C#,Linq,我正在努力处理linq查询 我想: 为每个计划\区域\ ID选择未通过qc(qc=1)的箱子 选择没有QC不合格标记(1)的前3个箱子(例如,如果没有QC标记=1,则选择箱子3、4和5) 求3个选定值的平均值,为每个计划区域id创建“BaselPeak” 我尝试了以下代码: var categories = drugonboard .Where(p => p.Field<int?>("QC") != 1) .OrderByDescending(x => x

我正在努力处理linq查询

我想:

  • 为每个计划\区域\ ID选择未通过qc(qc=1)的箱子
  • 选择没有QC不合格标记(1)的前3个箱子(例如,如果没有QC标记=1,则选择箱子3、4和5)
  • 求3个选定值的平均值,为每个计划区域id创建“BaselPeak”
  • 我尝试了以下代码:

    var categories = drugonboard
        .Where(p => p.Field<int?>("QC") != 1)
        .OrderByDescending(x => x.Field<int>("bin")).Take(3)
        .GroupBy(t => new { ID = t.Field<int>("schedule_region_id")})
        .Select(g => new
        {
          schedule_region_id = g.Key.ID,
          BaselPeak = g.Average(p => p.Field<double>("AnalytePeak"))
        });
    

    在对子记录进行分组和排序后,需要取3

    var categories = drugonboard
      .Where(p => p.Field<int?>("QC") != 1)
      .GroupBy(t => new { ID = t.Field<int>("schedule_region_id")})
      .Select(g => new {
        schedule_region_id = g.Key.ID,
        BaselPeak = g.OrderByDescending(x => x.Field<int>("bin"))
          .Take(3)
          .Average(p => p.Field<double>("AnalytePeak"))
      });
    
    var类别=风险
    .其中(p=>p.字段(“QC”)!=1)
    .GroupBy(t=>new{ID=t.Field(“schedule\u region\u ID”)})
    .选择(g=>new{
    附表_区域_id=g.Key.id,
    BaselPeak=g.OrderByDescending(x=>x.Field(“bin”))
    .采取(3)
    .平均值(p=>p.字段(“分析峰”))
    });
    
    这假定:
    如果所有仓位都是QC=1,则您根本不希望计划\u区域\u id为父项,前3个仓位是指最高的3个仓位编号。

    在分组和对子记录排序后,您需要取3

    var categories = drugonboard
      .Where(p => p.Field<int?>("QC") != 1)
      .GroupBy(t => new { ID = t.Field<int>("schedule_region_id")})
      .Select(g => new {
        schedule_region_id = g.Key.ID,
        BaselPeak = g.OrderByDescending(x => x.Field<int>("bin"))
          .Take(3)
          .Average(p => p.Field<double>("AnalytePeak"))
      });
    
    var类别=风险
    .其中(p=>p.字段(“QC”)!=1)
    .GroupBy(t=>new{ID=t.Field(“schedule\u region\u ID”)})
    .选择(g=>new{
    附表_区域_id=g.Key.id,
    BaselPeak=g.OrderByDescending(x=>x.Field(“bin”))
    .采取(3)
    .平均值(p=>p.字段(“分析峰”))
    });
    
    这假定:
    如果所有的箱子都是QC=1,那么您根本不想要明细表\u区域\u id父项,前3位是指最高的3个箱子编号。

    您的问题令人困惑,因为您说取前3个箱子(3,4,5),但在您的数据集中,id 1的箱子3的QC=1。当你说前3个箱子时,你是指分析峰值最高的箱子,还是说箱子编号最高的箱子?“id”是否与“计划区域id”相同?显示所需的输出将有所帮助。当所有箱子都是QC=1时,您期望得到什么?您的问题令人困惑,因为您说取前3个箱子(3,4,5),但在您的数据集中,id为1的箱子3的QC=1。当你说前3个箱子时,你是指分析峰值最高的箱子,还是说箱子编号最高的箱子?“id”是否与“计划区域id”相同?显示所需的输出将有所帮助。当所有箱子的质量控制=1时,您期望得到什么?