介绍
在管理多个带有序列号的文件时,我们使用了零填充的文件名,以方便程序进行排序。使用 Blazor WebAssembly 应用程序上传和处理多个文件时,我被告知文件名的顺序与 Windows 不同,当我检查时,文件名在 Windows 资源管理器中按自然顺序排序。 。
检查当前行为
在 Blazor WebAssembly 应用程序中指定多个文件时,我编写了以下代码。
private void LoadImageFiles(InputFileChangeEventArgs e)
{
foreach (var file in e.GetMultipleFiles(maxAllowedFiles))
{
}
}
使用e.GetMultipleFiles()
可以获得的文件的顺序是文件夹中指定的排序顺序。如果用户总是按名称排序就好了,但这种假设是不合理的,所以我决定应用自然顺序排序。
安装库
搜索NuGet的时候,发现有几个库是用来按自然顺序排序的,但是我安装了下面这些库,下载量很大,很可能要维护。
将NaturalSort.Extension
添加到_Imports.razor
。
_Imports.razor
@using NaturalSort.Extension
图书馆的使用
常规代码正常排序。
foreach (var content in contents.OrderBy(x => x.Key)) {}
OrderBy
现在可以指定为第二个参数以按自然顺序排序。
foreach (var content in contents.OrderBy(x => x.Key, StringComparison.OrdinalIgnoreCase.WithNaturalSort())) {}
综上所述
起初,我以为我必须自己实现自然顺序排序,但我很高兴我在 NuGet 上找到了一个不错的库。有一些部分还没有验证,比如日文文件名是否可以正常处理,所以想继续检查操作。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308632949.html