Как правильно написать join в linq?
У меня есть список List<VisitorRequestDto> и словарь Dictionary<Guid, (string, string, string, string)>
public class VisitorRequestDto
{
public uint Num { get; set; }
public List<VisitorDto> Visitors { get; set; }
}
public class VisitorDto
{
public Guid Id {get;set;}
}
Я хочу сделать join и вытащить данные из словаря, VisitorRequestDto, VisitorDto. Вот такие данные должны вернуться:
[Num, Id, string, string, string, string]
У меня получается возвращать только со словаря и Visitors, делаю я так:
var subjects =
from visitor in visitorRequests.SelectMany( x => x.Visitors )
join archiveEvent in events on visitor.Id equals archiveEvent.Key
select new Output
{
SubjectId = visitor.Id,
Entry = archiveEvent.Value.minEntry.Value.Timestamp,
Exit = archiveEvent.Value.maxExit.Value.Timestamp,
EntryTerritory = archiveEvent.Value.minEntry.Value.TerritoryIDs,
ExitTerritory = archiveEvent.Value.maxExit.Value.TerritoryIDs
};
Не хватает num, но я не совсем понимаю, как мне его достать. Если добавить from visitorRequests после join, то он вообще будет странно джойнить и вернет совсем не то
Ответы (1 шт):
Автор решения: tym32167
→ Ссылка
Может так
var dict = new Dictionary<Guid, (string, string, string, string)>();
var visitorRequests = new List<VisitorRequestDto>();
var subjects = visitorRequests
.SelectMany(x => x.Visitors.Select(z => new
{
Num = x.Num,
Id = z.Id,
Entry1 = dict[z.Id].Item1,
Entry2 = dict[z.Id].Item2,
Entry3 = dict[z.Id].Item3,
Entry4 = dict[z.Id].Item4,
})).ToArray();