Простите, если я не согласен с вашим намерением, потому что я не вижу полной структуры ваших данных или вашего начального from
или последнего select
предложения в отрывке вашего запроса. Поэтому я публикую то, что я считаю решением на основе вашего фрагмента и примеров данных, которые я построил. Дайте мне знать, если я ухожу, и я исправлю это.
Если вы хотите получить список строк отправлений в POD, с каждой отправкой в POD в отдельной строке, вы можете сделать что-то вроде этого (имейте в виду, что мои предложения from
и select
основаны на моих примерах данных ):
// select the consignment id & name (i made up) and each matching POD
var results = from c in consignments
join p in dc.PODs on c.ID equals p.Consignment into pg
from pgg in pg.DefaultIfEmpty()
select new { ID = c.ID, Name = c.Name, POD = pgg };
// This is just a SAMPLE display just for kicks and grins
foreach (var r in results)
{
Console.WriteLine(r.Name + " " + ((r.POD != null)
? (r.POD.Consignment + " " + r.POD.Description)
: "none"));
}
Этот запрос выводит что-то вроде:
One 1 TextBox
Two none
Three 3 Refridgerator
Three 3 Bucket
Four none
Five none
Однако я не совсем уверен, что понимаю ваше замечание:
"Проблема в том, что я получаю
дубликаты основных строк "
Я не уверен, что если вы говорите, что не хотите видеть одну партию на покупку в строке, где каждый результат в IEnumerable
представляет собой товар с партией и последовательностью POD, вы бы хочу запрос как:
// select the Consignment ID and Name (i made up), and list of PODs
// instead of the individual POD
var results = from c in consignments
join p in dc.PODs on c.ID equals p.Consignment into pg
select new { ID = c.ID, Name = c.Name, PODs = pg };
// This is just a SAMPLE display just for kicks and grins
foreach (var r in results)
{
Console.WriteLine(r.Name + " ");
if (r.PODs.Count() > 0)
{
foreach (var pod in r.PODs)
{
Console.WriteLine("\t" + pod.Consignment + " " + pod.Description);
}
}
else
{
Console.WriteLine("\tNone");
}
}
Там, где выбор выбирает список POD вместо индивидуального соответствия, который выводится следующим образом:
One
1 TextBox
Two
None
Three
3 Refridgerator
3 Bucket
Four
None
Five
None