Как добавить условие меньше или равно условию во внутреннем соединении linq - PullRequest
0 голосов
/ 07 января 2020

У нас есть два объекта, Dates и ActiveEvents. Хотите выполнить внутреннее соединение с этими условиями с условием меньше или равным в linq. То же, что и ссылка ниже SQL, где #Tables являются C# объектами

Select A. from #Activities A
Inner Join #Dates D ON A.ActivityDate <= D.ProcessDate

Пробовал ниже, но это не дает правильных результатов.

 var filteredActivity = (from e in ActiveEvents
            from p in dates
            where e.ActivityDate <= p.Date
            select new ActiveEvent
            {
                ActivityDate = p.Date,
                EventId = e.EventId
            }).ToList();

И

  var filteredActivity = (from e in ActiveEvents
            from p in dates.Where(r => e.ActivityDate <= r)
            select new ActiveEvent
            {
                ActivityDate = p.Date,
                EventId = e.EventId
            }).ToList();

Не могли бы вы предложить лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 08 января 2020

Вы можете попробовать этот способ

var filteredActivity = (from e in ActiveEvents
        join p in dates
        where e.ActivityDate <= p.ProcessDate 
        select new ActiveEvent
        {
            ActivityDate = p.Date,
            EventId = e.EventId
        }).ToList();

P / s: в идеале, между 2 таблицами должно быть foreign key, чтобы присоединиться вот так join p in dates on e.Key equals p.ForeignKey

0 голосов
/ 07 января 2020

Согласно вашему примеру, запрос фильтруется по ProcessDate, но ваш запрос linq фильтруется по p.Date. Это те же поля? Первый приведенный вами пример должен быть верным.

...