Сравнение двух идентификаторов таблиц. ASP.NET MVC

В настоящее время я загружаю две таблицы «Заказы» и «Цвета», я хотел, чтобы в таблице «Цвета» были перечислены элементы, идентификатор которых равен «Заказы». Для этого мне пришло в голову присвоить значения IdOrders переменной и сравнить ее с моими IdOrders (в моей таблице Colors), но невозможно присвоить моей переменной баланс базы данных

Мои столы:

public partial class Orders
{
    public int ID_Orders { get; set; }
    public Nullable<System.DateTime> Data_Registo { get; set; }
    public string Num_Encomenda { get; set; }
    public string Ref_Cliente { get; set; }
}

public partial class Colors
{
    public int ID_Orders { get; set; }
    public int ID_Programa_Malha { get; set; }
    public int ID_Linha_Cor { get; set; }
    public string Cor { get; set; }
}

Я работаю с уже работающей базой данных, и, возможно, эти таблицы уже используются в соединении sql, но не знаю, как обрабатывать эту информацию.

Как я уже сказал, первое, что я вспомнил, это сделать это:

Мой контроллер:

var id = from d in db.Orders
         select d.ID_Orders;

        var color = db.Colors.Where(x => x.ID_Orders = id).ToList();

        var tables = new EncomendaViewModel
        {
            Orders= db.Orders.ToList(),
            Colors= color.ToList(),
        };
        return View(tables);

Ошибка в идентификаторе: CS0029 C# Не удается неявно преобразовать тип в 'int'

Можно ли обрабатывать данные таким образом?

Спасибо всем, кто может помочь!

-------------------(Обновлять)---------------------------- --------------------

Использование оператора == cs0019 '==' не может применяться к операндам типа

Мой взгляд в Broswer

dbEntities sd = new dbEntities();
        List<Orders> orders= sd.Orders.ToList();
        List<Colors> colers= sd.Colors.ToList();

        var multipletable = from c in orders
                            join st in colers on c.ID_Programa equals st.ID_Programa into table1
                            from st in table1.DefaultIfEmpty()                                
                            select new MultipleClass { orders= c, colers= st  };

В этой строке ошибка? db.Colors.Where(x => x.ID_Orders = id).ToList(); Вам нужно использовать "= = ", если вы сравниваете две вещи -> db.Colors.Where(x => x.ID_Orders == id).ToList();

Vidiya Prasanth Pappannan 11.12.2020 10:22

Я использую только =, потому что если я использую ==, это дает мне ошибку: оператор cs0019 '==' не может применяться к операндам типа

Miguel 11.12.2020 10:30
from d in db.Orders select d.ID_Orders возвращает коллекцию вместо одного элемента. Если вам нужен элемент, выберите первый (или то, что когда-либо требовалось) и выполните сравнение, используя ==
user1672994 11.12.2020 10:30

используя соединение, я могу перечислить только заказанные цвета, не перечислять их в заказах, потому что у меня есть больше цветов, я оставляю новую схему выше для тех, кто может помочь.

Miguel 15.12.2020 11:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
1 038
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Из приведенного ниже запроса может быть возвращено одно или несколько значений.

var id = from d in db.Orders
         select d.ID_Orders;

Это причина, по которой он выдавал ошибку. Итак, давайте попробуем это так

var color = db.Colors.Where(x => id.Contains(x.ID_Orders)).ToList();

так что это работает, но перечислите все идентификаторы, не перечисляйте идентификаторы, равные порядку

Miguel 11.12.2020 10:44

В этом случае вам нужно исправить ваш var id = from d в db.Orders select d.ID_Orders; чтобы вернуть только тот идентификатор, который вам нужен.

Vidiya Prasanth Pappannan 11.12.2020 10:48

как я могу вернуть значение идентификатора каждого списка? сверху я помещаю картинку того, что мне преподносят

Miguel 11.12.2020 14:27
Ответ принят как подходящий
 public class OrderWithColorsViewModel
{
    public Order order { get; set; }
    public List<Colors> colers{ get; set; }
}

Public class TestOrderController : Controller
{
    public DailyMVCDemoContext db = new DailyMVCDemoContext();
    public ActionResult Index()
    {
        var orders= db.Orders.ToList();
        var colers = db.Colors.ToList();
        var result = (from c in orders
                     join st in colers on c.ID_Orders equals st.id into table1
                     select new OrderWithColorsViewModel { order =c, colers = 
                     table1.ToList() }).ToList();
        return View(result);
    }
 }

кредиты: YihuiSun

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