C#におけるLINQの小ネタ2
下記は仕事中に見かけたソースコードで、改善の余地がある記述です。
修正前ソースコード
if(users.Count(f => f.Age >= 40) > 0) { Console.WriteLine("40歳以上が存在します!"); }
リスト内で条件に合致するデータが、1件でも存在する場合は「Count() > 0」とするより「Any()」としたほうが簡潔に記述できます。
参考:Qiita
修正後ソースコード
if(users.Any(f => f.Age >= 40)) { Console.WriteLine("40歳以上が存在します!"); }
自分でも気を抜くとたまにやってしまうので、戒めの意味を込めてブログに掲載。
ソースコード全体
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp1 { class Program { static void Main(string[] args) { // テストデータを取得 List<UserInfo> users = GetTestData(); // 年齢が40以上のユーザが1人でもいる場合 if(users.Count(f => f.Age >= 40) > 0) { Console.WriteLine("40歳以上が存在します!"); } Console.Read(); } /// <summary> /// テストデータを取得 /// </summary> /// <returns>テストデータリスト</returns> static List<UserInfo> GetTestData() { List<UserInfo> list = new List<UserInfo>(); list.Add(new UserInfo() { UserID = "UserA", UserName = "ユーザA", Age = 18 }); list.Add(new UserInfo() { UserID = "UserB", UserName = "ユーザB", Age = 34 }); list.Add(new UserInfo() { UserID = "UserC", UserName = "ユーザC", Age = 30 }); list.Add(new UserInfo() { UserID = "UserD", UserName = "ユーザD", Age = 38 }); list.Add(new UserInfo() { UserID = "UserE", UserName = "ユーザE", Age = 45 }); list.Add(new UserInfo() { UserID = "UserF", UserName = "ユーザF", Age = 24 }); list.Add(new UserInfo() { UserID = "UserG", UserName = "ユーザG", Age = 32 }); list.Add(new UserInfo() { UserID = "UserH", UserName = "ユーザH", Age = 19 }); list.Add(new UserInfo() { UserID = "UserI", UserName = "ユーザI", Age = 23 }); return list; } } /// <summary> /// ユーザ情報を保持するクラス /// </summary> class UserInfo { /// <summary> /// ユーザID /// </summary> public string UserID { get; set; } /// <summary> /// ユーザ名 /// </summary> public string UserName { get; set; } /// <summary> /// 年齢 /// </summary> public int Age { get; set; } } }