private void BorrowReader(SqlDataReader reader) { Data = new Dictionary <string, IEnumerable <IsbnOwnership> >(); ICollection <IsbnOwnership> list = new Collection <IsbnOwnership>(); EntityIdMapper = new ConcurrentDictionary <int, int>(); while (reader.Read()) { EntityIdMapper.TryAdd(reader.GetInt32(0), reader.GetInt32(1)); } if (reader.NextResult()) { while (reader.Read()) { IsbnOwnership item = new IsbnOwnership(); item.ScopeId = reader.GetInt32(0); item.Isbn = !reader.IsDBNull(1) ? reader.GetString(1) : string.Empty; item.TotalCopies = reader.GetInt32(2); item.PlatformTenantId = reader.GetInt32(4); list.Add(item); } } var groupedItems = list.GroupBy(t => t.Isbn); foreach (var ownership in groupedItems) { Data.Add(ownership.Key, ownership); } }
private void BorrowSecondaryReader(SqlDataReader reader) { ICollection <IsbnOwnership> list = new Collection <IsbnOwnership>(); while (reader.Read()) { IsbnOwnership item = new IsbnOwnership(); item.ScopeId = reader.GetInt32(0); item.Isbn = !reader.IsDBNull(1) ? reader.GetString(1) : string.Empty; item.TotalCopies = reader.GetInt32(2); item.PlatformTenantId = reader.GetInt32(0); list.Add(item); } foreach (var item in list.Where(item => EntityIdMapper.ContainsKey(item.PlatformTenantId))) { item.ScopeId = EntityIdMapper[item.PlatformTenantId]; } var groupedItems = list.GroupBy(t => t.Isbn); foreach (var ownership in groupedItems) { if (!Data.ContainsKey(ownership.Key)) { Data.Add(ownership.Key, ownership); } else { Data[ownership.Key] = ownership; } } }