C# linq group by multiple columns

Date: 2019-11-25
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public async Task<IEnumerable<Measurement>> GetLastMeasurementForEachSensor()
{
var groupedMaxDateTime = AsQueryable()
.GroupBy(m => m.SensorId)
.Select(m => new
{
SensorId = m.Key,
SensorDateTime = m.Max(y => y.SensorDateTime)
});
var dmMeasurements = await AsQueryable()
.Join(groupedMaxDateTime,
(DmMeasurement a) => new { a.SensorId, a.SensorDateTime },
b => new { b.SensorId, b.SensorDateTime },
(a, b) => a
)
.Select(x => new DmMeasurement {
SensorId = x.SensorId,
ReceivedAt = x.ReceivedAt,
ReceivedValue = x.ReceivedValue
})
.ToListAsync();
return dmMeasurements.Select(x => x.ToDomain(true));
}
public async Task<IEnumerable<Measurement>> GetLastMeasurementForEachSensor() { var groupedMaxDateTime = AsQueryable() .GroupBy(m => m.SensorId) .Select(m => new { SensorId = m.Key, SensorDateTime = m.Max(y => y.SensorDateTime) }); var dmMeasurements = await AsQueryable() .Join(groupedMaxDateTime, (DmMeasurement a) => new { a.SensorId, a.SensorDateTime }, b => new { b.SensorId, b.SensorDateTime }, (a, b) => a ) .Select(x => new DmMeasurement { SensorId = x.SensorId, ReceivedAt = x.ReceivedAt, ReceivedValue = x.ReceivedValue }) .ToListAsync(); return dmMeasurements.Select(x => x.ToDomain(true)); }
public async Task<IEnumerable<Measurement>> GetLastMeasurementForEachSensor()
{
	var groupedMaxDateTime = AsQueryable()
		.GroupBy(m => m.SensorId)
		.Select(m => new
		{
			SensorId = m.Key,
			SensorDateTime = m.Max(y => y.SensorDateTime)
		});
	var dmMeasurements = await AsQueryable()
		.Join(groupedMaxDateTime,
			(DmMeasurement a) => new { a.SensorId, a.SensorDateTime },
			b => new { b.SensorId, b.SensorDateTime },
			(a, b) => a
		)
		.Select(x => new DmMeasurement {
			SensorId = x.SensorId,
			ReceivedAt = x.ReceivedAt,
			ReceivedValue = x.ReceivedValue
		})
		.ToListAsync();
	return dmMeasurements.Select(x => x.ToDomain(true));
}
29330cookie-checkC# linq group by multiple columns
0 of 2000 max characters.