* refactor create playout handler * refactor get all playouts handler * refactor delete playout handler * remove dead code * ignore unnamed artists for collections * more repository cleanup * more schedule items refactoring * more playout refactoring * refactor playout builder * refactor ffmpeg profiles * more ffmpeg profile refactoring * rework resolutions * refactor media collections * refactor config elements * update changelog * more cleanup
19 lines
572 B
C#
19 lines
572 B
C#
using System;
|
|
using System.Linq;
|
|
using System.Linq.Expressions;
|
|
using System.Threading.Tasks;
|
|
using LanguageExt;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace ErsatzTV.Infrastructure.Extensions
|
|
{
|
|
public static class QueryableExtensions
|
|
{
|
|
public static async Task<Option<T>> SelectOneAsync<T, TKey>(
|
|
this IQueryable<T> enumerable,
|
|
Expression<Func<T, TKey>> keySelector,
|
|
Expression<Func<T, bool>> predicate) where T : class =>
|
|
await enumerable.OrderBy(keySelector).FirstOrDefaultAsync(predicate);
|
|
}
|
|
}
|