У меня есть две таблицы; EndToEnd и PartPort. Я хотел бы получить данные PartPortA и PartportB из одной и той же строки в EndToEnd и запросить с ними Partport и получить их соответствующий PartGid из Partport, который может быть в любой строке в таблице Partport. Пока что я могу это сделать, но мне нужно сделать два разных вызова LINQ, но я хотел бы уменьшить их до одного. Вот мой код:Оператор C# Linq для объединения двух таблиц и нескольких столбцов
// this demonstrates how to join two tables, however only works for one AssetportGid at a time
var part_portGid_a_results = (from icp in entities.EndToEnd
where icp.IntertPortGidA != null &&
icp.IntertPortGidB != null
join ica in entities.PartPort
on icp.PartPortA equals ica.PortGid
select new { icp.PartPortA, ica.PartGid, }).ToList();
var part_portGid_b_results = (from icp in entities.EndToEnd
where icp.IntertPortGidA != null &&
icp.IntertPortGidB != null
join ica in entities.PartPort
on icp.PartPortB equals ica.PortGid
select new { icp.PartPortA, ica.PartGid, }).ToList();
return Json(part_portGid_a_results, JsonRequestBehavior.AllowGet);
Что я хотел бы сделать, и я уже пытался, но получил ошибку это:
var part_portGid_a_results = (from icp in entities.EndToEnd
where icp.IntertPortGidA != null &&
icp.IntertPortGidB != null
join ica in entities.PartPort
on icp.PartPortA && icp.PartPortB equals ica.PortGid
select new { icp.PartPortA, ica.PartGid, }).ToList();
Ошибка я получаю:
Guid? EndToEnd.PartPortB
Error:
Operator '&&' cannot be applied to operands of type 'System.Guid' and 'System.Guid?'
«на icp.PartPortA && icp.PartPortB равна ica.PortGid» не Правильно, это не допустимое логическое выражение, поскольку icp.PartPortA - это Guid, а не логическое. Вы пытаетесь присоединиться к обоим столбцам? Затем попробуйте это вместо: «на icp.PartPortA равно ica.PortGid && icp.PartPortB равно ica.PortGid» – HaukurHaf
Intellisense, похоже, не нравится – DeeTee
Возможно, потому что один из них является NULL, а другой не ... (Используйте .Value nullable guid) – HaukurHaf