実現したいこと
レコードの日付列から重複なしドロップダウンリストを作っています
日付列が文字列であるためドロップダウンリストが整列してくれません
日付列をDate型にする事が出来ないのですが並び替える方法はありますか?
発生している問題・分からないこと
Entity frameworkのLINQで並び替えする方法
該当のソースコード
C#
1// モデル 2 public class Db11 3 { 4 public string? hiduke { get; set; } 5 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 6 [Key] 7 public int id { get; set; } 8 } 9 10// Listモデル 11 public class Db11SyuruiViewModel 12 { 13 public List<Db11>? Db11s { get; set; } 14 public SelectList? Hidukes { get; set; } 15 }
C#
1// ビュー 2 @model Syuukei.Models.Db11SyuruiViewModel 3 4 @{ 5 ViewData["Title"] = "Index"; 6 } 7 8 <h1>Index</h1> 9 10 <p> 11 <a asp-action="Create">新規作成</a> 12 </p> 13 14 <form asp-controller="Db11" asp-action="Index" method="get"> 15 <p> 16 <select asp-for="Db11Hiduke" asp-items="Model.Hidukes"> 17 <option value="">全て</option> 18 </select> 19 </p> 20 </form> 21 22 @if (ViewBag.Message != null) 23 { 24 <p>@ViewBag.Message</p> 25 } 26 <table class="table"> 27 <thead> 28 <tr> 29 <th> 30 @Html.DisplayNameFor(model => model.Db11s[0].hiduke) 31 </th> 32 <th></th> 33 </tr> 34 </thead> 35 <tbody> 36 @foreach (var item in Model.Db11s) { 37 <tr> 38 <td> 39 @Html.DisplayFor(modelItem => item.hiduke) 40 </td> 41 <td> 42 <a asp-action="Edit" asp-route-id="@item.id">Edit</a> | 43 <a asp-action="Details" asp-route-id="@item.id">Details</a> | 44 <a asp-action="Delete" asp-route-id="@item.id">Delete</a> 45 </td> 46 </tr> 47 } 48 </tbody> 49 </table>
C#
1// コントローラー 2 public async Task<IActionResult> Index(string db11Hiduke) 3 { 4 // db11テーブルから全ての日付を取得する 5 var hidukeQuery = _context.Db11 6 .OrderBy(m => m.hiduke) 7 .Select(m => m.hiduke); 8 9 // db11テーブルから全てのデータを取得するLINQクエリ 10 var db11s = _context.Db11.Select(m => m); 11 12 // 日付検索処理 13 if (!string.IsNullOrEmpty(db11Hiduke)) 14 { 15 // 選択した日付と一致するデータを抽出する 16 db11s = db11s.Where(a => a.hiduke == db11Hiduke); 17 } 18 19 // 日付データを重複なしリストにしてプロパティに格納する 20 var db11SyuruiVM = new Db11SyuruiViewModel 21 { 22 Hidukes = new SelectList(await hidukeQuery.Distinct().ToListAsync()), 23 Db11s = await db11s.ToListAsync() 24 }; 25 26 // ViewModelをビューに渡す 27 return View(db11SyuruiVM); 28 }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
やったこと
コントローラーのORDERBYを日付型にキャストして並び替えられないか?
.OrderBy(m => m.hiduke)
↓
.OrderBy(m => DateTime.Parse(m.hiduke))
結果
内部サーバーエラー (リクエストの処理中に未処理の例外が発生しました)
補足
ASP.NET Core MVC Visual Studio Community 2026 Windows11 Pro PostgreSQL18
hiduke にはどのような値が入っているのでしょうか?