EF Core Sequence contains no elements


一、在.Net Core中使用Ef的聚合函數報錯:

類似函數:

1,使用FirstOrDefault() 來代替 First()

2、使用SingleOrDefault 來代替 Single

3、使用 ElementAtOrDefault 來代替 .ElementAt

4、如果是在Average, Sum等中報錯

錯誤如下:

Sequence contains no elements

 

二、在.Net Core的 內存列表 Linq  聚合函數解決方案

var items = new int[] { 1, 2, 3, 4, 5 };
//Double avg = items.Average();

//替換:
//Double avg = items.Where(x => x > 10).Average();

//解決方案:使用 DefaultIfEmpty
// Double avg = items.Where(x => x > 10).DefaultIfEmpty().Average();
Double avg = items.Where(x => x > 10).DefaultIfEmpty().Max();

 

三、在 EF Core 數據庫列表 的聚合函數解決方案

注意:在目前的 EF Core 3.1中  DefaultIfEmpty() 不起作用對於聚合函數,還是報錯

處理方式1,可以使用排序的 FirstOrDefault() 處理

處理方式2,把數據庫數據拿到內存中 聚合計算

            //錯誤代碼
            //var num = GetQueryable()
            //    .Where(q => q.GooID == gooid && q.Type == type)
            //    .Select(q => q.Sort)
            //    .ToList()
            //    .DefaultIfEmpty()
            //    .Max();

            //排序取得最大值
            var num = GetQueryable()
                .Where(q => q.GooID == gooid && q.Type == type)
                .Select(q => q.Sort)
                 .OrderByDescending(q => q)
                .FirstOrDefault();

 

 

更多:

.Net Core3 新特性整理 

.net core中使用GB2312編碼的問題

.Net Core EF 使用整理合集   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM