我在尝试找出以下内容的 LINQ 查询时遇到问题。
列是MeterSerialNumber、Date、DeviceType(M或C),然后是48个读数值列。
有些仪表会安装校正器。对于这些仪表,同一日期将同时有一个 M (DeviceType) 行和一个 C 行。我只需要这些仪表的 C 行。
例如
我需要一个查询来转换它:
MeterSerialNumber,Date,DeviceType,Reading1,Reading2,etc
8017680S,19/08/2010,M,12,23,etc
4504761S,19/08/2010,M,12,23,etc
4504761S,19/08/2010,C,12,23,etc
08000963,19/08/2010,M,12,23,etc
对此:
MeterSerialNumber,Date,DeviceType,Reading1,Reading2,etc
8017680S,19/08/2010,M,12,23,etc
4504761S,19/08/2010,C,12,23,etc
08000963,19/08/2010,M,12,23,etc
我怀疑我可能需要嵌套查询,但就是想不通!
最佳答案
或者试试这个:
var group = meters
.Where(m => m.DeviceType == "M" && !meters.Any(m2 => m2.MeterSerialNumber == m.MeterSerialNumber && m2.DeviceType == "C"))
.Union(meters
.Where(m => m.DeviceType == "C" && meters.Any(m2 => m2.MeterSerialNumber == m.MeterSerialNumber && m2.DeviceType == "M")));
关于c# - LINQ 条件分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3786723/