List <EntityVersion <string, DateTime> > IQueryOutlookContactItemFolderStrategy.QueryContactItemFolder(IOutlookSession session, Folder folder, string expectedFolderId, string filter)
        {
            var contacts = new List <EntityVersion <string, DateTime> > ();

            using (var tableWrapper = GenericComObjectWrapper.Create(folder.GetTable(filter)))
            {
                var table = tableWrapper.Inner;
                table.Columns.RemoveAll();
                table.Columns.Add(c_entryIdColumnName);

                var storeId = folder.StoreID;

                while (!table.EndOfTable)
                {
                    var row     = table.GetNextRow();
                    var entryId = (string)row[c_entryIdColumnName];

                    var contact = session.GetContactItemOrNull(entryId, expectedFolderId, storeId);
                    if (contact != null)
                    {
                        using (var contactWrapper = GenericComObjectWrapper.Create(contact))
                        {
                            contacts.Add(new EntityVersion <string, DateTime> (contactWrapper.Inner.EntryID, contactWrapper.Inner.LastModificationTime));
                        }
                    }
                }
            }

            return(contacts);
        }
 public Task <IEnumerable <EntityVersion <string, DateTime> > > GetVersions(IEnumerable <IdWithAwarenessLevel <string> > idsOfEntitiesToQuery, Tcontext context, IGetVersionsLogger logger)
 {
     return(Task.FromResult <IEnumerable <EntityVersion <string, DateTime> > >(
                idsOfEntitiesToQuery
                .Select(id => _session.GetContactItemOrNull(id.Id, _folderId, _folderStoreId))
                .Where(e => e != null)
                .ToSafeEnumerable()
                .Select(c => EntityVersion.Create(c.EntryID, c.LastModificationTime.ToUniversalTime()))
                .ToList()));
 }