I have a function
public Task<IEnumerable<T>> GetVersionsAsync<T>(string key)
{
var request = GetVersionsRequestBuilder.Create(_databaseName, _collectionName).WithKey(key);
return Task.Run(() =>
{
var records = _myReader.GetAllVersionsForKey(request);
var returnValue = records.Select(record =>
{
var document = _mySerializer.Deserialize<T>(record.document);
return document;
});
return returnValue;
});
}
This is skipping first value and giving all rest results
However, if I change the LINQ part to ForEach, then it gives all records
var returnValue = new List<T>();
foreach (var record in records)
{
var document = _mySerializer.Deserialize<T>(record.document);
returnValue.Add(document);
}
return returnValue as IEnumerable<T>;
Is this due to LINQ's Select projection being inside Task.Run?