LINQy로 바꾸려면 어떻게해야합니까?

c# dapper linq

문제

여기에이 데이터 세트가 있습니다. 이벤트에는 List<Groups> 유형의 EventGroups 속성이 있습니다. List<Groups>

List<Events> e;
List<Groups> g;

// Get the data from the database using dapper
using( var con = DataAccessMaster.GetOpenConnection( ) ) {
    using( var multi = con.QueryMultiple( sprocname, new { StartDate = fromDate, EndDate = toDate }, commandType:CommandType.StoredProcedure ) ) {
        e = multi.Read<Events>( ).ToList( );
        g = multi.Read<Groups>().ToList();
    }
}

// Only put the groups that belong to one another within the related event so that when we goto bind it will be painless
foreach ( var ev in e ) {
    ev.EventGroups = new List<Groups>();
    foreach ( Groups group in g.Where( Groups => ( ev.EventID == Groups.EventID ) ) ) {
        ev.EventGroups.Add( group );
    }
}

return e;

나는 마지막 블록이 그것보다 더 깨끗하게 재 작성 될 수있는 것처럼 느낀다. 이 클리너를 만들려면 어떻게해야합니까?

수락 된 답변

Enumerable.ToList 확장 메서드 를 사용하여 IEnumerable <T>을 새 List <T>로 바꿀 수 있습니다.

foreach (var ev in e)
{
    ev.EventGroups = g.Where(groups => ev.EventID == groups.EventID)
                      .ToList();
}

인기 답변

예를 들어

ev.EventGroups = g.Where( Groups => ( ev.EventID == Groups.EventID )).ToList();

생각 나다.




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