Я пытаюсь построить три разных набора точек данных (GraphPoints, GraphPoints1, GraphPoints2) на графике JS Canvas по оси Y, но когда я добавляю все эти наборы в код контроллера, результаты не отображаются. Если я добавляю только один набор (например, y = s.GraphPoints1), то создается график и отображаются результаты. Однако мне нужны все наборы точек данных (GraphPoints, GraphPoints1, GraphPoints2) на оси Y на одном графике. У меня проблемы с размещением наборов точек данных (GraphPoints, GraphPoints1, GraphPoints2) под y. Пожалуйста, помогите и дайте мне знать, что я делаю не так. Спасибо!
Это работает:
public ActionResult Graph(int machineId)
{
using (var db = new DatabaseModel())
{
var sheets = db.Checksheets
.Where(s => s.MachineId == machineId)
.ToList()
.Select(s => new
{
label = $"O: {s.OrderNum} P: {s.PartNum}",
y = s.GraphPoints
});
return Json(sheets, JsonRequestBehavior.AllowGet);
}
}
Это не работает, но я хочу что-то вроде этого со всеми наборами точек данных на одном графике:
public ActionResult Graph(int machineId)
{
using (var db = new DatabaseModel())
{
var sheets = db.Checksheets
.Where(s => s.MachineId == machineId)
.ToList()
.Select(s => new
{
label = $"O: {s.OrderNum} P: {s.PartNum}",
y = $"{s.GraphPoints} {s.GraphPoints1} {s.GraphPoints2}"
});
return Json(sheets, JsonRequestBehavior.AllowGet);
}
}
Вот таблица SQL, в которой записываются точки графика:
GraphPoints GraphPoints1 GraphPoints2
50 45 60
30 12 100
56 89 67
Я пытаюсь построить три разных набора точек данных (GraphPoints, GraphPoints1, GraphPoints2) на графике JS Canvas по оси Y, но когда я добавляю все эти наборы в код контроллера, результаты не отображаются. Если я добавляю только один набор (например, y = s.GraphPoints1), то создается график и отображаются результаты. Однако мне нужны все наборы точек данных (GraphPoints, GraphPoints1, GraphPoints2) на оси Y на одном графике. Имеет ли это смысл?
Кроме того, как выглядит структура вашей таблицы? Образцы строк данных?
@Matt Я пытаюсь создать график Canvas JS. Пожалуйста, просмотрите мой обновленный код выше для более подробной информации.
y = s.GraphPoints1 генерирует график, но y = $ "{s.GraphPoints} {s.GraphPoints1} {s.GraphPoints2}" ничего не генерирует. Но мне нужны все GraphPoints на моем графике по оси Y.
Что такое s.Graphpoints, Graphpointts1 и Grahoints2?
GraphPoints - это вычисленные значения, которые я хочу разместить на оси Y графика, который я пытаюсь сгенерировать. Все эти значения GraphPoint записываются в таблицу SQL и выглядят примерно так, как показано выше в моем обновленном коде. Также обратитесь к части моего кода выше, посвященной контроллеру, чтобы узнать, как я вычислял GraphPoints, GraphPoints1 и GraphPoints2.
Как добавить эти GraphPoints, GraphPoints1 и GraphPoints2 в запрос Select выше?
См. Документацию. здесьy - это номер, а не строка. Можете ли вы нарисовать, какую диаграмму хотите?
@gkardava GraphPoints, GraphPoints1 и GraphPoints2 - это не числа, а переменные, которые были вычислены в части кода контроллера (см. выше), хотя результаты являются числами. Я приложил изображение того, как будет выглядеть график (снова см. Обновленный код выше). Я надеюсь, что кто-нибудь поможет мне написать запрос LINQ Select Query!
можешь попробовать что-то вроде этого: .SelectMany(s => new[] { new{ label = $"O: {s.OrderNum} P: {s.PartNum}", y = s.GraphPoints}, new{ label = $"O: {s.OrderNum} P: {s.PartNum}", y = s.GraphPoints1}, new{ label = $"O: {s.OrderNum} P: {s.PartNum}", y = s.GraphPoints2} });
@gkardava Спасибо за ответ! Я попробую это. На данный момент я использую метод Concat, который, кажется, работает отлично!





Метод Concat можно использовать для переноса всех GraphPoints под y.
public ActionResult Graph(int machineId)
{
using (var db = new DatabaseModel())
{
var sheets = db.Checksheets
.Where(s => s.MachineId == machineId)
.ToList()
.Select(s => new
{
label = $"O: {s.OrderNum} P: {s.PartNum}",
y = s.GraphPoints
});
var sheets1 = db.Checksheets
.Where(s => s.MachineId == machineId)
.ToList()
.Select(s => new
{
label = $"O: {s.OrderNum} P: {s.PartNum}",
y = s.GraphPoints1
});
var sheets2 = db.Checksheets
.Where(s => s.MachineId == machineId)
.ToList()
.Select(s => new
{
label = $"O: {s.OrderNum} P: {s.PartNum}",
y = s.GraphPoints2
});
return Json(sheets.Concat(sheets1).Concat(sheets2), JsonRequestBehavior.AllowGet);
}
}
Зачем тебе ToList перед отбором?
Потому что он создает раскрывающийся список из таблицы machineId.
Что "не работает"? Не могли бы вы быть более конкретными? У вас есть ошибки? Неожиданные результаты? Что вы ожидали вместо этого?