C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ArrayList内の検索

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■97142 / inTopicNo.1)  ArrayList内の検索
  
□投稿者/ コーヒー使い (1回)-(2021/04/06(Tue) 10:52:40)

分類:[VB.NET/VB2005 以降] 

お世話になります。

VB.NETでの質問です。

日付を格納したArrayList内に、今日の日付のより前の日付があるかどうかを判定したいです。
Containsメソッドを使えば、固定値であれば検出できるのですが、
検索対象日付が不特定の場合、どのようにしてArrayList内の日付と今日の日付を比較すればいいのでしょうか?

よろしくお願いいたします。
引用返信 編集キー/
■97143 / inTopicNo.2)  Re[1]: ArrayList内の検索
□投稿者/ 魔界の仮面弁士 (3041回)-(2021/04/06(Tue) 11:07:28)
2021/04/06(Tue) 11:20:22 編集(投稿者)

No97142 (コーヒー使い さん) に返信
> 日付を格納したArrayList内に、今日の日付のより前の日付があるかどうかを判定したいです。
新規開発での System.Collections.ArrayList の利用は推奨されていません。
代わりに、System.Collections.Generic.List(Of ) の利用を検討してみてください。
https://docs.microsoft.com/en-us/dotnet/api/system.collections.arraylist#remarks:~:text=Important


> Containsメソッドを使えば、固定値であれば検出できるのですが、
> 検索対象日付が不特定の場合、どのようにしてArrayList内の日付と今日の日付を比較すればいいのでしょうか?
ArrayList に格納している日付の型は何でしょう。
Date ですか? それとも String でしょうか?

たとえば Date 型なのであれば
 Dim t As Date = Today
 If yourArrayList.OfType(Of Date)().Any(Function(d) d < t) Then
  '★
 End If
もしくは
 Dim t As Date = Today
 Dim past() As Date = yourArrayList.OfType(Of Date)().Where(Function(d) d < t).ToArray()
 If past.Length > 0 Then
  '★
 End If
あるいはループ判定で
 Dim t As Date = Today
 Dim hasPast As Boolean = False
 For Each d As Date In yourArrayList
  If d < t Then
   hasPast = True
   Exit For
  End If
 Next
 If hasPast Then
  '★
 End If
のように書けます。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ