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
具有分组和条件结果的linq查询_Linq - Fatal编程技术网

具有分组和条件结果的linq查询

具有分组和条件结果的linq查询,linq,Linq,我以前问过一个类似的问题,还有一个补充问题。我有一个汽车类型列表,结构如下: class Car { public string Make { get; set; } public string Model { get; set; } public string SecondHand { get; set; } public int AccidentCount { get; set; } public int

我以前问过一个类似的问题,还有一个补充问题。我有一个汽车类型列表,结构如下:

class Car
    {
        public string Make { get; set; }
        public string Model { get; set; }
        public string SecondHand { get; set; }
        public int AccidentCount { get; set; }
        public int MaintenanceCount { get; set; }
    }

List<Car> cars = new List<Car>()
{
new Car(){Make = "Mercedes", Model = "E-200", SecondHand ="N", AccidentCount = 1 ,MaintenanceCount = 0},
new Car(){Make = "Mercedes", Model = "E-200", SecondHand ="N", AccidentCount = 1 ,MaintenanceCount = 1},
new Car(){Make = "Mercedes", Model = "E-200", SecondHand ="Y", AccidentCount = 1 ,MaintenanceCount = 1},
new Car(){Make = "Mercedes", Model = "E-180", SecondHand ="N", AccidentCount = 0 ,MaintenanceCount = 1},
new Car(){Make = "Mercedes", Model = "E-180", SecondHand ="N", AccidentCount = 1 ,MaintenanceCount = 1} 
};
等级车
{
公共字符串Make{get;set;}
公共字符串模型{get;set;}
公共字符串二手{get;set;}
公共int意外计数{get;set;}
public int MaintenanceCount{get;set;}
}
列出车辆=新列表()
{
新车(),
新车(),
新车(){Make=“Mercedes”,Model=“E-200”,SecondHand=“Y”,acidentcount=1,MaintenanceCount=1},
新车(),
新车()
};
在查询的输出中,我需要对Make和Model进行两列分组,得到两列中的acidentcount和MaintenanceCount之和,最后确定给定模型输出“Y”是否有任何“二手”值“Y”,否则为“N”

以上各项的输出应为:

Make Model AccidentCount MaintenanceCount SecondHand Mercedes E-200 3 2 Y Mercedes E-180 1 2 N 使模型意外计数维护计数为二手 梅赛德斯E-200 3 2 Y 梅赛德斯E-180 1 2 N 我在查询的输出中需要的是Make和Model的两列,通过对它们进行分组

获取两列中的意外计数和维护计数之和

最后,如果给定模型输出“Y”有任何“二手”值“Y”,则为“N”

最终查询如下所示:

cars.GroupBy(c=> new {c.Make,c.Model})
        .Select(g=> new Car {
              Make = g.Key.Make,
              Model = g.Key.Model, 
              AccidentCount = g.Sum(c=>c.AccidentCount),
              MaintenanceCount = g.Sum(c=>c.MaintenanceCount),
              SecondHand = g.Any(c=> c.SecondHand=="Y") ? "Y" : "N"
              });

谢谢,这就是我想要的结果。
AccidentCount = g.Sum(c=>c.AccidentCount),
MaintenanceCount = g.Sum(c=>c.MaintenanceCount)
SecondHand = g.Any(c=> c.SecondHand=="Y") ? "Y" : "N"
cars.GroupBy(c=> new {c.Make,c.Model})
        .Select(g=> new Car {
              Make = g.Key.Make,
              Model = g.Key.Model, 
              AccidentCount = g.Sum(c=>c.AccidentCount),
              MaintenanceCount = g.Sum(c=>c.MaintenanceCount),
              SecondHand = g.Any(c=> c.SecondHand=="Y") ? "Y" : "N"
              });