Linq rook ie здесь.
У меня есть SQL Серверная база данных, откуда поступают все необработанные данные для сварщиков. 17 сварщиков по номерам. У них свой процент KPI за каждый день (несколько заданий в день) в 1 смену.
У меня есть такие данные, как
Welder ID KPI Date
480 80 2020-04-01
94 60 2020-04-01
480 65 2020-04-02
94 78 2020-04-02
480 95 2020-04-03
94 90 2020-04-03
Expecting
Welder ID AvgKPI
480 80
94 76
Это можно легко сделать в SQL, изображение здесь = > https://imgur.com/a/un0jCTc Верхняя таблица результатов первого выбора взята из таблицы «raw» basi c, а нижняя таблица результатов соответствует ожидаемым в Linq, но не SQL.
У меня есть страница отчета (ASP. NET MVC5. NET Framework)
Контроллер
public ActionResult Records(DateTime? start, DateTime? end, string search = "")
if (start == null)
{
start = new DateTime(2019, 01, 02);
}
if (end == null)
{
end = new DateTime();
end = DateTime.Now;
};
SiempelLinkedServerEntities db = new SiempelLinkedServerEntities();
List<ChecksSovaSiempelZak> chartData = db.ChecksSovaSiempelZaks
//base code generating the full list based on parameters
.Where(x => x.welderID.Contains(search)) // with DateTime? start, DateTime? end, string search=""
.Where(t => t.Date >= start & t.Date <= end)
.ToList();
var dataSet = chartData.Select(k => new { k.welderID, k.welderKPI })
.Distinct()
.GroupBy(x => new { x.welderID}, (key, group) => new
{
IDwelder = key.welderID,
KPIwelder = group.Average(x=>x.welderKPI)
}).ToList();
var welders = dataSet.Select(x => x.IDwelder);
var weldersKPI = chartData.Select(x => x.KPIwelder);
ViewBag.welders = welders;
ViewBag.weldersKPI = weldersKPI;
Есть форма с 3 фильтрами, возвращаются параметры начала и конца DateTime предопределенные значения. Другой фильтр сделан для поиска строки для указанного c человека. Не уверен, что мой бэкэнд-подход правильный. Ожидается, что, если не задано никакого определенного c персона (строка поиска), вернет все строки на основе параметров даты и времени, как предопределено. Эти данные собираются посмотреть на диаграмму. Диаграмма не показывает среднее значение вообще. Страница отчета здесь => https://imgur.com/a/DILnLI6 Левая сторона страницы хорошая и правильная. Отображение списка указанных c человек или лиц в выбранный период. Как исправить контроллер для передачи данных в Viewbag, как ожидается на SQL Server? Средние значения являются динамическими c (выбранный период из параметров datetime).
Короче говоря, я хочу передать данные на график, например, ось X = список ID сварщика и ось Y = список среднего значения для каждого Сварщик на основе выбранного периода.
Любой совет более чем приветствуется. Прошу прощения за мой английский sh, если что-то указано плохо