How to force LINQ Sum() to return 0 while source collection is empty

前端 未结 6 1916
余生分开走
余生分开走 2020-12-02 06:17

Basically when I do the following query, if no leads were matched the following query throws an exception. In that case I\'d prefer to have the sum equalize 0 rather than an

6条回答
  •  盖世英雄少女心
    2020-12-02 06:29

    Try changing your query to this:

    db.Leads.Where(l => l.Date.Day == date.Day
                && l.Date.Month == date.Month
                && l.Date.Year == date.Year
                && l.Property.Type == ProtectedPropertyType.Password
                && l.Property.PropertyId == PropertyId)
             .Select(l => l.Amount)
             .DefaultIfEmpty(0)
             .Sum();
    

    This way, your query will only select the Amount field. If the collection is empty, it will return one element with the value of 0 and then the sum will be applied.

提交回复
热议问题