Создать значение если оно не найдено

69
10 марта 2022, 00:30

В ruby есть find or create. Как в c# сделать такое же? Единственное что нашёл, это такой хелпер.

public static class DbSetExtensions
{
    public static T AddIfNotExists<T>(this DbSet<T> dbSet
         , T entity, Expression<Func<T, bool>> predicate = null)
         where T : class, new()
    {
        var exists = predicate != null ? dbSet.Any(predicate) : dbSet.Any();
        return !exists ? dbSet.Add(entity) : null;
    }
}
Answer 1

Судя по смыслы фразы find or create, как-то так

public static class DbSetExtensions
{
    public static T FindOrCreate<T>(this DbSet<T> dbSet
         , T entity, Expression<Func<T, bool>> predicate)
         where T : class, new()
    {
        var found = dbSet.FirstOrDefault(predicate);
        if (found != null)
        {
            return found;
        }
        else
        {
            return dbSet.Add(entity).Entity;   
        }        
    }
}
READ ALSO
OpenXML ошибка при добавлении ячейки

OpenXML ошибка при добавлении ячейки

Нужно заполнить шаблон xlsx даннымиПользуюсь библиотекой openxml

108
Имитация нажатие клавиши

Имитация нажатие клавиши

Пишу бота для одной игры на C#

67
Предотвращение утери данных с помощью Alert

Предотвращение утери данных с помощью Alert

У меня есть такая секция в приложении:

65