我有一個名稱相同但擴展名不同的檔案的字串串列和一個擴展名陣列。每個檔案名都必須有每個擴展名,我想輸出所有丟失的對。有好的 LINQ 嗎?
var files = new List<string>() { "file2.jpg", "file1.jpg", "file1.png", "file2.bmp", "file3.png", "file1.bmp" };
var exts = new[] { ".png", ".bmp", ".jpg" };
結果一定是這樣的
file2 missing .png
file3 missing .bmp, .jpg
uj5u.com熱心網友回復:
var files = new List<string>() { "file2.jpg", "file1.jpg", "file1.png", "file2.bmp", "file3.png", "file1.bmp" };
var exts = new[] { ".png", ".bmp", ".jpg" };
var fileGroups = files
.GroupBy(c => Path.GetFileNameWithoutExtension(c), v => Path.GetExtension(v))
.Select(x => new { File = x.Key, MissingExts = exts.Except(x) })
.Where(x=> x.MissingExts.Any());
foreach(var group in fileGroups)
{
Console.WriteLine($"{group.File} {string.Join(' ', group.MissingExts)}");
}
uj5u.com熱心網友回復:
Serhii 答案足夠有效。無論如何,如果這些檔案不是僅在內部使用,我建議檢查雙重擴展名。有幾個即插即用的解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/428911.html
上一篇:如何將變數傳遞給謂詞運算式?
下一篇:使用一個搜索字串搜索多個列值
