Вы должны использовать SingleOrDefault
Из того, что я могу сказать, ваш результат должен быть уникальным, так как вы используете идентификатор продукта, который будет уникальным
var product = await Task.Run(()
=> db.SingleOrDefault(u => u.ApplicationUserId == user.Id && u.ProductId == id));
Это вернет один элемент или ноль, еслиничего не было найдено.Осторожно, он выдаст исключение, если будет найдено более одного элемента, чего не должно быть, так как идентификатор продукта, скорее всего, будет уникальным, и если он найдет больше, то вы узнаете, что вы запутались в своей базе данных, что у вас есть несколько продуктов стот же идентификатор
Если допустимо, чтобы этот запрос мог иметь более одной записи в качестве результата, тогда используйте FirstOrDefault
вместо SingleOrDefault
, но тогда логика будет не совсем правильной, поскольку она не делаетсмысл иметь запрос, который должен вернуть один или ни одного, чтобы вернуть первый в списке.