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

120
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

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

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

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

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

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

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

112