Прошу прощения за то, что у меня нет знаний по этому вопросу, так как этот вопрос довольно простой, но у меня есть столбец nullable [DateTime], и я хотел бы использовать запрос LINQ для выбора записей для каждого пользователь с максимальной "меткой времени", найденной при объединении.
Вот мой запрос на данный момент.
return (from t1 in db.BU
from t2 in db.UserNames
.Where(t => (t.User_Username == t1.Username))
from t3 in db.Logins
.Where(t => (t.username == t1.Username))
where myBusinessUnits.Contains(t1.BusinessUnit_ID)
orderby (t2.Name) descending
select new GlobalMyTeamDetailModel
{
LastLogin = t3.timestamp,
Name = t2.Name
});
Если бы кто-нибудь мог мне помочь, я был бы признателен.
Это максимальное значение таблицы «Логин», которую я пытаюсь получить для каждого пользователя.
РЕДАКТИРОВАТЬ: еще одна попытка, которая не дала желаемого результата:
var result =
(from t1 in db.LoginHistories
where t1.username == user
from t2 in db.UserNames
.Where(t => (t.User_Username == t1.username))
from t3 in db.UserBusinessUnits
.Where(t => (t.Username == t1.username))
where myBusinessUnits.Contains(t3.BusinessUnit_ID)
group t1 by new { t1.username } into g
let MaxDate = g.Max(uh => uh.timestamp)
select new GlobalMyTeamDetailModel
{
LastLogin = MaxDate,
Name = g.Key.username
});