В настоящее время я загружаю две таблицы «Заказы» и «Цвета», я хотел, чтобы в таблице «Цвета» были перечислены элементы, идентификатор которых равен «Заказы». Для этого мне пришло в голову присвоить значения 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 };
Я использую только =, потому что если я использую ==, это дает мне ошибку: оператор cs0019 '==' не может применяться к операндам типа
from d in db.Orders select d.ID_Orders
возвращает коллекцию вместо одного элемента. Если вам нужен элемент, выберите первый (или то, что когда-либо требовалось) и выполните сравнение, используя ==
используя соединение, я могу перечислить только заказанные цвета, не перечислять их в заказах, потому что у меня есть больше цветов, я оставляю новую схему выше для тех, кто может помочь.
Из приведенного ниже запроса может быть возвращено одно или несколько значений.
var id = from d in db.Orders
select d.ID_Orders;
Это причина, по которой он выдавал ошибку. Итак, давайте попробуем это так
var color = db.Colors.Where(x => id.Contains(x.ID_Orders)).ToList();
так что это работает, но перечислите все идентификаторы, не перечисляйте идентификаторы, равные порядку
В этом случае вам нужно исправить ваш var id = from d в db.Orders select d.ID_Orders; чтобы вернуть только тот идентификатор, который вам нужен.
как я могу вернуть значение идентификатора каждого списка? сверху я помещаю картинку того, что мне преподносят
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
В этой строке ошибка? db.Colors.Where(x => x.ID_Orders = id).ToList(); Вам нужно использовать "= = ", если вы сравниваете две вещи -> db.Colors.Where(x => x.ID_Orders == id).ToList();