#linq
#linq
Вопрос:
Я создал запрос в linqpad, и он работает, но когда я пытаюсь использовать его в своем приложении blazor, приложение выдает ошибку.
У меня есть три таблицы: tblOpportunity, tblOppStatus и lkpStatus
и возможность может иметь много статусов в зависимости от того, насколько зрелым является запрос. Поэтому мне нужно получить все самые последние статусы для каждой возможности. Я также хочу иметь возможность фильтровать набор данных, чтобы я получал только возможности со значениями x, y и z
void Main()
{
var output=from o in TblOpportunities
join sub in (
//get the latest status ID for the from the joining table
from smax in TblOppStatuses
group smax by smax.OpportunityID
into g
select new
{
OName = g.Key,
MaxS = (from t2 in g select t2.OppStatusID).Max()
})
on o.OpportunityID equals sub.OName
join st in TblOppStatuses on sub.MaxS equals st.OppStatusID
//get the statu sname form the lookup table
join lst in Lkp_Statuses on st.StatusID equals lst.StatusID
join c in TblClients on o.ClientID equals c.ClientID
select new
{
c.ClientName,
o.OpportunityName,
sub.MaxS,
lst.Status,
lst.StatusID
};
int[] filter = { -1, 62};
output.Where(of=>filter.Contains(of.StatusID))
.Dump();
}
Ошибка, возникающая в подзапросе
MaxS = (from t2 in g select t2.OppStatusID).Max()
если я прокомментирую это, запрос выполняется, но не дает мне того, что я хочу. Кто-нибудь может посоветовать, что я делаю неправильно, поскольку я говорю, что он отлично работает в Linqpad.
Комментарии:
1. Не могли бы вы обновить свой вопрос, чтобы включить сообщение об ошибке?
2. Брэндон, спасибо, что спросил, я изменил запрос на этот, и он сработал. сгруппируйте SMAX по SMAX.OpportunityID в g выберите new { OID = g.Key, MaxS = g.Max(tc=>tc.OppStatusID) //(из t2 в grp выберите t2.OppStatusID).Max() })
3. Я закрою это