Есть: DefaultIfEmpty
.
Я не уверен, что ваши DbVersions
и DbRatings
и какая коллекция содержит ровно ноль предметов, но это идея:
var emptyCollection = new List<int>();
var average = emptyCollection.DefaultIfEmpty(0).Average();
Обновление: (повторяя то, что сказано в комментариях ниже, чтобы увеличить видимость)
Если вам нужно использовать DefaultIfEmpty
для коллекции типов классов, помните, что вы можете изменить запрос LINQ на проект до агрегирования . Например:
class Item
{
public int Value { get; set; }
}
var list = new List<Item>();
var avg = list.Average(item => item.Value);
Если вы не хотите / не можете создать значение по умолчанию Item
с Value
, равным 0, вы можете сначала проецировать на коллекцию int
с, а , а затем предоставить значение по умолчанию :
var avg = list.Select(item => item.Value).DefaultIfEmpty(0).Average();