Нет ли более изящного способа?

Мне нужно достать данные со всех приборов сгруппировав их по узлу, к которому они принадлежат.
Не могу определить связь узлов с точками.
Как-то неуклюже получается: достаю список объектов (узлов) и список всех точек.
Node[] nodes = server.Nodes.GetList();
MeasurePoint[] points = server.MeasurePoints.GetList();

потом тупые циклы
foreach (var no in nodes)
{
foreach (var p in points)
{
if (NodeId == p.NodeId)
{
// нашел !
// работаю…
job(no.Id, p.NodeId);
}
}
}

Вы можете воспользоваться функцией MeasurePointManager.GetListByNodeAsync.

А метод GetListByNode не подойдет ли? Вроде, то что надо.
Я с асинхронными методами не работал.

Подойдет, но это устаревший метод, который в будущем будет удален. Поэтому мы не рекомендуем их использовать.

Посоветуйте справочные материалы для освоения асинхронных методов.
Может, пример с комментариями есть?
Того что я нашел - онлайн руководство и примеры на github.com/… не достаточно

Можем посоветовать статью от Microsoft.

Отличная статья. Ликбез. Изучаю, спасибо.
Однако, нет ли examples для LersFramework на тему асинхронные методы чтения базы данных ?
Например, про MeassurePoint.Data.GetConsumptionAsync?

Нет, к сожалению таких примеров нет. В LersFramework точно такие же асинхронные функции, что и в приведенной статье компании Microsoft.

Например в этой утилите используются асинхронные методы.
https://github.com/lers-uchet/ImportTemperatureMeteoInfo

Более быстрая группировка точек учета по объектам:

Core.Node[] nodeList = await Connection.Server.Nodes.GetListAsync();
Dictionary<int, Core.Node> nodes = nodeList.ToDictionary(x => x.Id);

var measurePointList = await Connection.Server.MeasurePoints.GetListAsync();
var groups = measurePointList.GroupBy(x => x.NodeId);

foreach (var g in groups);
{
	Core.Node node = nodes[g.Key];
	Core.MeasurePoint[] measurePoints = g.ToArray();

	Job(node, measurePoints);
}

Отлично, благо вам

Однако, вот проще
select * from MeasurePoint group by MeasurePoint_NodeID

Мы крайне не рекомендуем использовать прямые запросы к базе. При изменении архитектуры таблицы ваш запрос может не работать.