async functions toegevoegd
1275ef02840bcc047527376ce9e6a8b5110cbbca
2 files changed
JsonContextDb.JsonContext/JsonSet.csJsonContextDb.TestApp/Program.cs
diff --git a/JsonContextDb.JsonContext/JsonSet.cs b/JsonContextDb.JsonContext/JsonSet.cs
index 4204ee3..3b9714d 100644
--- a/JsonContextDb.JsonContext/JsonSet.cs
+++ b/JsonContextDb.JsonContext/JsonSet.cs
@@ -26,4 +26,29 @@ public class JsonSet<T>(JsonContext context) : IQueryable<T>, IQueryable, IEnume
public void RemoveRange(IEnumerable<T> entities) => context.RemoveRange(entities);
public IEnumerator<T> GetEnumerator() => GetQueryable().GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
+
+ /// <summary>
+ /// Asynchronously retrieves the first entity that matches the specified predicate, or the first entity if no predicate is provided.
+ /// Returns null if no entity is found.
+ /// </summary>
+ /// <param name="predicate">An optional expression to filter entities.</param>
+ /// <returns>A task representing the asynchronous operation, returning the first matching entity or null.</returns>
+ public Task<T?> FirstOrDefaultAsync(Expression<Func<T, bool>>? predicate = null)
+ {
+ var queryable = GetQueryable();
+ var result = predicate != null
+ ? queryable.FirstOrDefault(predicate)
+ : queryable.FirstOrDefault();
+ return Task.FromResult(result);
+ }
+
+ /// <summary>
+ /// Asynchronously retrieves all entities as a list.
+ /// </summary>
+ /// <returns>A task representing the asynchronous operation, returning a list of all entities.</returns>
+ public Task<List<T>> ToListAsync()
+ {
+ var result = GetQueryable().ToList();
+ return Task.FromResult(result);
+ }
}
diff --git a/JsonContextDb.TestApp/Program.cs b/JsonContextDb.TestApp/Program.cs
index 8007e70..592e6d2 100644
--- a/JsonContextDb.TestApp/Program.cs
+++ b/JsonContextDb.TestApp/Program.cs
@@ -51,7 +51,7 @@ Debug.Assert(count1 == 1);
Debug.Assert(newUser.Id != 0);
-//var user = users.FirstOrDefault(x => x.Name.Contains("99998"));
+var user = await users.FirstOrDefaultAsync(x => x.Name.Contains("1"));
//Debug.Assert(user != null);