2

このデータセットはここにあります。イベントには、次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;

最後のブロックは、それよりもきれいに書き直すことができたように感じます。これをきれいにするために何ができますか?

4

3 に答える 3

4

Enumerable.ToList拡張メソッドを使用して、IEnumerable<T>を新しいList<T>に変換できます。

foreach (var ev in e)
{
    ev.EventGroups = g.Where(groups => ev.EventID == groups.EventID)
                      .ToList();
}
于 2011-06-22T03:33:20.853 に答える
1

で内側のループを折りたたむことができますToList()

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

外側のループは、副作用のあるループであり、LINQyではないため、すでに可能な限りLINQyになっています。

于 2011-06-22T03:33:33.443 に答える
1

これは例えば

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

頭に浮かぶ。

于 2011-06-22T03:34:05.560 に答える