我想从特定的文件夹中获取文件,以便在轮播中显示它们,所以我正在使用:
string[] files = Directory.GetFiles("path/to/my/folder")
但是,文件按其名称在 files[]
在我的页面(强类型视图)中,我Model
包含许多属性,其中包括一个List<FileModel> filesToDisplay
由图片填充的要显示的属性。AFileModel
是一个自定义模型,其中包含名称,大小,布尔值IsMain
和其他一些图片属性。
另一方面,该filesToDisplay
列表是从我的数据库中填充的,我将在其中搜索必须显示的图片。所有图片都在同一目录中,但我不能总是显示该目录中的所有图片;这就是为什么我要搜索要显示的数据库。
我的目标是在轮播中显示文件:
IsMain
在第一位置是真实的。有总是一个且只有一个画面,其中IsMain
是真实的IsMain
为假从filesToDisplay
IsMain
为假从filesToDisplay
等等...
当然,顺序filesToDisplay
可以(并且几乎总是)与files[]
所以,我想做这样的事情:
files.OrderBy(filesToDisplay.IsMain).ThenBy(filesToDisplay(x => !x.IsMain))
这当然是不可能的。
如何在“正确的” C#中表达它?谢谢你的帮助 !
我的理解是,除了希望IsMain首先显示之外,您希望排序后的文件与要显示的文件具有相同的顺序。我认为该代码应满足该要求;
string[] files = Directory.GetFiles("path/to/my/folder");
var sortedFiles = (from o in filesToDisplay
join i in files
on o.Name equals Path.GetFileName(i)
orderby o.IsMain descending
select i).ToArray();
这将IsMain
首先对排序后的文件进行排序,其中总是有一个文件,以便转到数组中的第一个元素,然后其余排序通过LINQ连接进行,其中LINQsortedFiles
序列使用序列中的现有filesToDisplay
顺序。
(这假定FileModel
保存,FileName
并且其中的每个条目string[] files
都是一个包含文件名的filePath。
例如,FileModel FileName:Picture1.jpg,files [0]:C:/RandomPath/Images/Picture1.jpg,因为您需要一个值来链接每个文件files[]
都FileModel
放在中filesToDisplay
。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句