У меня есть запрос LINQ, где мне нужно объединить 3 таблицы, но, похоже, он висит при оценке выражения.LINQ multiple join hang
Вы видите какие-либо проблемы с этим или любыми идеями, почему я буду висит? VS2010
Окно вывода показывает различные темы, выходящие с 0.
Вот выражение LINQ:
var results = (from drECO in dtECO.AsEnumerable()
join drBOMTo8 in dtBOM.AsEnumerable() on drECO.Field<string>("PN8Dig") equals drBOMTo8.Field<string>("PN8Dig")
from drBOMFrom8 in dtBOM.AsEnumerable()
join drFAA8 in dtFAA.AsEnumerable() on drBOMFrom8.Field<string>("PN8Dig") equals drFAA8.Field <string>("PN8Dig")
from drBOMFromMon in dtBOM .AsEnumerable()
join drFAAMon in dtFAA .AsEnumerable() on drBOMFromMon.Field <string>("Mon") equals drFAAMon.Field <string>("Mon")
select new
{
PN = drECO .Field <string>("PN"),
PNNEWREV = drECO.Field <string>("PNNewRev"),
PN8DIG = drECO.Field <string >("PN8Dig"),
ECO = drECO .Field <string >("ECO"),
MON = drFAAMon.Field <string>("Mon"),
SUPNUM = drFAAMon.Field <string>("SupNum"),
URL = drFAAMon.Field <string>("URL")
}).Distinct();
' from drBOMmon в dtBOM.AsEnumerable() 'будет создавать декартово произведение. Это предназначено? –
OMG. Огромное спасибо. Я не знал этого. (как сторона, я новичок, и это мой первый вопрос) У меня есть dtECO, что я хочу связать с dtBOM с помощью PN8Dig, а затем я хочу, чтобы dtBOM связывался с dtURL с Mon. Эта логика создает декартовое соединение? Я бы хотел, чтобы все они были внутренними. Спасибо, Иван. –
Да, он создает декартовский продукт, потому что он не связан с предыдущими объединениями. Чтобы сделать это внутреннее соединение, вы должны связать его с «drECO» или «drBOM8Dig», например. вместо 'from drBOMmon in ..' вы должны использовать' join drBOMmon in ... on ... ' –