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

わんくま同盟

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

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


■83229 / )  Re[1]: Listオブジェクトに格納されたDataオブジェクトの削除
□投稿者/ 魔界の仮面弁士 (1180回)-(2017/03/14(Tue) 03:32:41)
No83220 (rotto さん) に返信
> 【質問01】
> Listオブジェクトに格納された中で、最も古い日付が含まれる
> Data型オブジェクトを削除したいのですが
> コードでどのように書けばよいのでしょうか?

たとえば
 list_data.Remove(list_data.OrderBy(_ => _.Hiduke).First());
のように書けます。これにより最古の 1 件が削除されます。

この方法では常に「1 件」を削除しようとするため、元のデータが 3 件ではなく
0 件であった場合は失敗します。元データが存在するかどうか、
if(list_data.Any()) { } などで事前チェックを行ってください。


また、「最古の日付」を持つ Data が複数存在した場合には、
削除候補レコードが複数件存在することになります。
そのような場合は、下記のように書くことできます。

 string min = list_data.Min(_ => _.Hiduke);
 for (int i = list_data.Count - 1; i >= 0; i--)
 {
  if(list_data[i].Hiduke == min)
  {
   list_data.RemoveAt(i);
  }
 }



> 【質問02】
> Listオブジェクトに格納された中で、最も古い日付のみを
> 削除する場合は、どのようにコードで書けばよいのでしょうか?

質問01 との違いが分からないのですが、先に書いたように
 Data oldData = list_data.OrderBy(_ => _.Hiduke).First();
で最古の日付を持つ Data が手に入ります(日付は oldData.Hiduke)ので、
それを削除すれば良いかと。
返信 編集キー/


管理者用

- Child Tree -