Создание объектов запроса LINQ

Я пытаюсь построить три разных набора точек данных (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

Что "не работает"? Не могли бы вы быть более конкретными? У вас есть ошибки? Неожиданные результаты? Что вы ожидали вместо этого?

HimBromBeere 18.05.2018 20:12

Я пытаюсь построить три разных набора точек данных (GraphPoints, GraphPoints1, GraphPoints2) на графике JS Canvas по оси Y, но когда я добавляю все эти наборы в код контроллера, результаты не отображаются. Если я добавляю только один набор (например, y = s.GraphPoints1), то создается график и отображаются результаты. Однако мне нужны все наборы точек данных (GraphPoints, GraphPoints1, GraphPoints2) на оси Y на одном графике. Имеет ли это смысл?

techindustry 18.05.2018 20:13

Кроме того, как выглядит структура вашей таблицы? Образцы строк данных?

Matt 18.05.2018 20:14

@Matt Я пытаюсь создать график Canvas JS. Пожалуйста, просмотрите мой обновленный код выше для более подробной информации.

techindustry 18.05.2018 20:16

y = s.GraphPoints1 генерирует график, но y = $ "{s.GraphPoints} {s.GraphPoints1} {s.GraphPoints2}" ничего не генерирует. Но мне нужны все GraphPoints на моем графике по оси Y.

techindustry 18.05.2018 20:18

Что такое s.Graphpoints, Graphpointts1 и Grahoints2?

HimBromBeere 18.05.2018 20:19

GraphPoints - это вычисленные значения, которые я хочу разместить на оси Y графика, который я пытаюсь сгенерировать. Все эти значения GraphPoint записываются в таблицу SQL и выглядят примерно так, как показано выше в моем обновленном коде. Также обратитесь к части моего кода выше, посвященной контроллеру, чтобы узнать, как я вычислял GraphPoints, GraphPoints1 и GraphPoints2.

techindustry 18.05.2018 20:25

Как добавить эти GraphPoints, GraphPoints1 и GraphPoints2 в запрос Select выше?

techindustry 18.05.2018 20:27

См. Документацию. здесьy - это номер, а не строка. Можете ли вы нарисовать, какую диаграмму хотите?

gkardava 18.05.2018 20:59

@gkardava GraphPoints, GraphPoints1 и GraphPoints2 - это не числа, а переменные, которые были вычислены в части кода контроллера (см. выше), хотя результаты являются числами. Я приложил изображение того, как будет выглядеть график (снова см. Обновленный код выше). Я надеюсь, что кто-нибудь поможет мне написать запрос LINQ Select Query!

techindustry 18.05.2018 21:16

можешь попробовать что-то вроде этого: .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 19.05.2018 00:35

@gkardava Спасибо за ответ! Я попробую это. На данный момент я использую метод Concat, который, кажется, работает отлично!

techindustry 19.05.2018 16:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
12
80
1

Ответы 1

Метод 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 перед отбором?

Caramiriel 06.06.2018 15:30

Потому что он создает раскрывающийся список из таблицы machineId.

techindustry 08.06.2018 14:42

Другие вопросы по теме