[C#] 簡單測試一下 MaxBy , MinBy

2023-02-07

今天介紹一個 .NET6 之後才有的東西,MinBy  還有 MaxBy

其實我只是看到後想說跟原本的 Min 跟 Max 有啥不同,其實就字面上跟很多網路上的範例都可以知道這是幹嘛的

但是我很好奇如果是遇到一樣的值的呢,很多案例都是測 int[] 但是如果是 Object[] 的某屬性一樣那他是會拿到一個還是多個



直接講一下範例,我放入 User 物件 其中有一個 Age  我故意設定有一樣的再進行 MinBy 跟  MaxBy 前

我都會打亂一次


var users = new List<User>(); users.Add(new Models.User { Id = "USER1", Age = 1 }); users.Add(new Models.User { Id = "USER2", Age = 1 }); users.Add(new Models.User { Id = "USER3", Age = 2 }); users.Add(new Models.User { Id = "USER4", Age = 3 }); users.Add(new Models.User { Id = "USER5", Age = 4 }); users.Add(new Models.User { Id = "USER6", Age = 4 }); //取之前我都讓他隨機 users = users.OrderByDescending(x => Guid.NewGuid()).ToList(); var minbyUser = users.MinBy(x => x.Age); var maxbyUser = users.MaxBy(x => x.Age); Result += JsonConvert.SerializeObject(minbyUser); Result += "<br>"; Result += JsonConvert.SerializeObject(maxbyUser); //Result //MinBy : USER1 or USER2 random //MaxBy : USER5 or USER6 random


直接說答案,答案就是每次都是隨機的,所以,這使用情境可以相對於使用在取得最新的一筆 log

這種情境會比較方便,如果你要真的細緻地拿到最小的那兩個物件們,你還是得乖乖的寫 code ,

感覺就是原本的 OrderByDescending+FirstOrDefault 或是 OrderBy+FirstOrDefault 的簡化版本

我一開始以為這 新的 Sugar 非常甜,看來還是得小心


reference:

https://blog.csdn.net/sD7O95O/article/details/122076063

https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.maxby?view=net-6.0

https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.minby?view=net-6.0


當麻許的碎念筆記 2014 | Donma Hsu Design.