我有这段代码:
private void CreateNewGif(string urlsdirs)
{
List<string> files = Directory.GetFiles(urlsdirs, "RainImage*.*").ToList();
List<string> files1 = Directory.GetFiles(urlsdirs, "SatelliteImage*.*").ToList();
}
个文件包含62个文件。 files1只包含9个文件。 我需要的文件将包含文件数减去第二个List的长度。
例如在文件中我有62个文件,例如:
index 0: file000001
index 1: file000002
.
.
.
index 61: file000062
文件包含其他文件,例如:
index 0: test000001
index 1: test000002
.
.
.
index 8: test000009
所以我需要List files1将包含file000001和file000002 ....但只有53个文件而不是原始的62个文件。
我需要以某种方式制作files1.length
- files.length
,而不是数学62 - 9,但也要删除files1
列表中的前9个文件。
所以最后List file1只包含53个文件。 (62 - files.length
)
现在,如果我查看列表files1
,我会看到它将从10开始到62.
答案 0 :(得分:1)
也许是这样的:
var satelliteImages = Directory.GetFiles(urlsdirs, "SatelliteImage*.*");
var suffixes = satelliteImages.Select(s => s.Substring(14));
var hashSet = new HashSet(suffixes);
var rainImages = Directory.GetFiles(urlsdirs, "RainImage*.*");
var filteredImages = rainImages.Where(s => !hashSet.Contains(s.Substring(9)))
var files = filteredImages.ToList();
说明:
"SatelliteImage*.*"
个文件的列表。s.Substring(14)
因为"SatelliteImage".Length = 14"
) HashSet
以便快速查找。"RainImage*.*"
个文件的列表。HashSet
中出现后缀的项目
(注意:s.Substring(9)
因为"RainImage".Length = 9"
) 或者更简单一点:
var hashSet = new HashSet(Directory.GetFiles(urlsdirs, "SatelliteImage*.*").Select(s => s.Substring(14)));
var files = Directory.GetFiles(urlsdirs, "RainImage*.*").Where(s => !hashSet.Contains(s.Substring(9))).ToList();
答案 1 :(得分:1)
尝试
var result = files.OrderBy(x => x).Skip(files1.Count);