linq 쿼리 결과의 목록 채우기

c# dapper linq list

문제

다음 코드를 가지고 있는데, userId와 연관된 결과를 반환하고 결과를 반복하고 컬렉션을 작성한 다음 다시 UI로 반환하려고합니다.

 public List<UserEmails> LoadUsersInbox(Int64 userId, int status)
    {
        List<UserEmails> userEmails = null;

        using (var sqlCon = new SqlConnection(Context.ReturnDatabaseConnection()))
        {
            var emails = sqlCon.Query<UserEmailEntity>(@"SELECT e.EmailId, e.ItemId, u.Username as FromUserName, e.EmailReceived
                                                   FROM User_Emails e
                                                   INNER JOIN User_Profile u on e.FromUserId = u.UserId
                                                   WHERE ToUserId = @userId and EmailStatus = @Status",
                                                   new { ToUserId = userId, Status = status }).OrderBy(d => d.EmailReceived);

            foreach (var item in emails)
            {
                // loop through and build and List of UserEmails
            }
        }

        return userEmails;
    }

하지만 구문을 이해할 수 없으므로 일부 사람이 나를 도와 줄 수 있습니다.

인기 답변

foreach 루프를 수행하지 않고도 목록을 변형 할 수 있습니다. Select 문을 사용하여이 작업을 수행합니다. 나는 이것을 검증 할 수 없다 (따라서 테스트되지 않은 코드),하지만 이렇게하면된다.

public List<Int64> LoadUsersInbox(Int64 userId, int status)
{
    using (var sqlCon = new SqlConnection(Context.ReturnDatabaseConnection()))
    {
       return sqlCon.Query<UserEmailEntity>
            (@"SELECT e.EmailId, e.ItemId, u.Username as FromUserName, e.EmailReceived
               FROM User_Emails e
               INNER JOIN User_Profile u on e.FromUserId = u.UserId
               WHERE ToUserId = @userId and EmailStatus = @Status",
               new { ToUserId = userId, Status = status })
            .OrderBy(d => d.EmailReceived)
            .Select(usrEmlEnt => usrEmlEnt.EmailId);
    }
    return new List<Int64>();
}


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.