using System.Collections.Generic;
public static void Main()
IEnumerable<Thing> list = null;
var sut = list.AsQueryResult();
Console.WriteLine(sut.Result.Count());
Console.WriteLine(sut.TotalCount);
list = new List<Thing> { new Thing { Data = "Works" } };
sut = list.AsQueryResult();
Console.WriteLine(sut.Result.Count());
Console.WriteLine(sut.TotalCount);
public string Data {get;set;}
public class QueryResult<T>
public QueryResult(IEnumerable<T> result, int totalCount)
public IEnumerable<T> Result { get; }
public int TotalCount { get; }
public static class EnumerableExtension
public static QueryResult<T> AsQueryResult<T>(this IEnumerable<T> result, int? totalCount = default)
return result == null ? new QueryResult<T>(Enumerable.Empty<T>(), totalCount ?? 0) : new QueryResult<T>(result, totalCount ?? result.Count());