Как я могу получить MAX ID строки через C # (Entity Framework) - PullRequest
0 голосов
/ 29 октября 2019

Я довольно новичок в C #, и мне нужно получить MAX ID участника (MemberID). Я искал переполнение стека и нашел многочисленные ресурсы, но не смог успешно реализовать решение.

Как это работает:

Существует идентификатор EMR, уникальный для каждого человека,но MemberID может отличаться, потому что они переключаются с плана на план. Мне нужно найти последнюю созданную запись (поэтому мне нужен MAX), потому что это означает, что это текущий профиль

Спасибо.

public List<MemberDTO> getMembers(int planID)
    {
        using (var dbContext = new CompanyHHCEntities())
        {
            var membersList = (from member in dbContext.PQIP_Member
                               where member.PlanID == planID
                               && (member.TeamAssigned ?? false)
                               select new MemberDTO()
                               {
                                   MemberID = member.ID,
                                   EMR_ID = member.EMR_ID ?? 0,
                                   FullName = member.FirstName + " " + member.LastName,
                                   Phone1 = member.HomePhone,
                                   Phone2 = member.Phone2,
                                   Street1 = member.Street1,
                                   Street2 = member.Street2,
                                   City = member.City,
                                   State = member.State,
                                   Zip = member.Zip
                               }).OrderBy(a => a.FullName).ToList();

            return membersList;
        }
    }

Я пробовал:

MemberID = members.Select(a => a.MemberID).Max(),

1 Ответ

2 голосов
/ 29 октября 2019

Это то, что вы хотите? Я не могу гарантировать, что это будет работать в SQL, или что это правильно в соответствии с вашей спецификацией.

public List<MemberDTO> getMembers(int planID)
{
    using (var dbContext = new CompanyHHCEntities())
    {
        var membersList = 
            dbContext.PQIP_Member
                .Where(member => member.PlanID == planID && (member.TeamAssigned ?? false))
                .GroupBy(member=>member.EMR_ID) // create groups of members where member has same EMR_ID
                .SelectMany(grp=>grp.OrderByDesc(member=>member.ID).Take(1)) // from each group, select member with highest ID
                .Select(member => new MemberDTO()
                           {
                               MemberID = member.ID,
                               EMR_ID = member.EMR_ID ?? 0,
                               FullName = member.FirstName + " " + member.LastName,
                               Phone1 = member.HomePhone,
                               Phone2 = member.Phone2,
                               Street1 = member.Street1,
                               Street2 = member.Street2,
                               City = member.City,
                               State = member.State,
                               Zip = member.Zip
                           })
                .OrderBy(a => a.FullName)
                .ToList();

        return membersList;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...