C# 有没有办法获取枚举文件返回值的长度?

C# 有没有办法获取枚举文件返回值的长度?,c#,arrays,linq,C#,Arrays,Linq,我正在尝试获取uri的数组,但在创建数组时我不知道它的长度。数组长度应该是变量“files”中项目数量的长度。 我知道我可以使用列表来完成这项工作,但我想尝试将其简化为单个数组,我需要“文件”的长度 Uri[] imageArray = new Uri[*some amounts of items from 'files'*] var files = Directory.EnumerateFiles("C:\\Users\\doggoz\\Documents\\VisualStudio2015\

我正在尝试获取uri的数组,但在创建数组时我不知道它的长度。数组长度应该是变量“files”中项目数量的长度。 我知道我可以使用列表来完成这项工作,但我想尝试将其简化为单个数组,我需要“文件”的长度

Uri[] imageArray = new Uri[*some amounts of items from 'files'*]
var files = Directory.EnumerateFiles("C:\\Users\\doggoz\\Documents\\VisualStudio2015\\Projects\\somethinngggggg\\", "*.*", SearchOption.TopDirectoryOnly)
                     .Where(s => s.EndsWith(".jpeg") || s.EndsWith(".jpg") || s.EndsWith(".png") || s.EndsWith(".gif") || s.EndsWith(".bmp"));

您可以使用
ToArray
方法:

var files = Directory.EnumerateFiles("C:\\Users\\doggoz\\Documents\\VisualStudio2015\\Projects\\somethinngggggg\\", "*.*", SearchOption.TopDirectoryOnly)
                     .Where(s => s.EndsWith(".jpeg") 
                              || s.EndsWith(".jpg") 
                              || s.EndsWith(".png") 
                              || s.EndsWith(".gif") 
                              || s.EndsWith(".bmp")
                    ).ToArray();

var imageArray = new Uri[files.Length];
var files = Directory.EnumerateFiles(
    @"C:\Users\doggoz\Documents\VisualStudio2015\Projects\somethinngggggg\", 
    "*.*", SearchOption.TopDirectoryOnly)
        .Where(s => 
            s.EndsWith(".jpeg") || 
            s.EndsWith(".jpg") || 
            s.EndsWith(".png") || 
            s.EndsWith(".gif") || 
            s.EndsWith(".bmp"));

Uri[] imageArray = new Uri[files.Count()];
顺便说一句,我建议您将倍数或更改为类似于以下内容的内容,这将使您的代码更具可读性:

var extensions = new HashSet<string>(StringComparer.OrdinalIgnoreCase)  
{  ".jpeg", ".jpg", ".png", ".gif", ".bmp" };

var files = Directory.EnumerateFiles(@"C:\Users\doggoz\Documents\VisualStudio2015\Projects\somethinngggggg\", "*.*", SearchOption.TopDirectoryOnly)
                     .Where(s => extensions.Contains(Path.GetExtension(s)))
                     .ToArray();
var extensions=newhashset(StringComparer.OrdinalIgnoreCase)
{.jpeg“,.jpg“,.png“,.gif“,.bmp”};
var files=Directory.EnumerateFiles(@“C:\Users\doggoz\Documents\VisualStudio2015\Projects\somethinnggggggg\”、“***”、SearchOption.TopDirectoryOnly)
.Where(s=>extensions.Contains(Path.GetExtension)))
.ToArray();

您可以使用
ToArray
方法:

var files = Directory.EnumerateFiles("C:\\Users\\doggoz\\Documents\\VisualStudio2015\\Projects\\somethinngggggg\\", "*.*", SearchOption.TopDirectoryOnly)
                     .Where(s => s.EndsWith(".jpeg") 
                              || s.EndsWith(".jpg") 
                              || s.EndsWith(".png") 
                              || s.EndsWith(".gif") 
                              || s.EndsWith(".bmp")
                    ).ToArray();

var imageArray = new Uri[files.Length];
var files = Directory.EnumerateFiles(
    @"C:\Users\doggoz\Documents\VisualStudio2015\Projects\somethinngggggg\", 
    "*.*", SearchOption.TopDirectoryOnly)
        .Where(s => 
            s.EndsWith(".jpeg") || 
            s.EndsWith(".jpg") || 
            s.EndsWith(".png") || 
            s.EndsWith(".gif") || 
            s.EndsWith(".bmp"));

Uri[] imageArray = new Uri[files.Count()];
顺便说一句,我建议您将倍数或更改为类似于以下内容的内容,这将使您的代码更具可读性:

var extensions = new HashSet<string>(StringComparer.OrdinalIgnoreCase)  
{  ".jpeg", ".jpg", ".png", ".gif", ".bmp" };

var files = Directory.EnumerateFiles(@"C:\Users\doggoz\Documents\VisualStudio2015\Projects\somethinngggggg\", "*.*", SearchOption.TopDirectoryOnly)
                     .Where(s => extensions.Contains(Path.GetExtension(s)))
                     .ToArray();
var extensions=newhashset(StringComparer.OrdinalIgnoreCase)
{.jpeg“,.jpg“,.png“,.gif“,.bmp”};
var files=Directory.EnumerateFiles(@“C:\Users\doggoz\Documents\VisualStudio2015\Projects\somethinnggggggg\”、“***”、SearchOption.TopDirectoryOnly)
.Where(s=>extensions.Contains(Path.GetExtension)))
.ToArray();

您可以保留现有代码,只需将行按相反顺序排列即可。这样,您就可以提前进行文件枚举,并且可以访问
Count()
方法:

var files = Directory.EnumerateFiles("C:\\Users\\doggoz\\Documents\\VisualStudio2015\\Projects\\somethinngggggg\\", "*.*", SearchOption.TopDirectoryOnly)
                     .Where(s => s.EndsWith(".jpeg") 
                              || s.EndsWith(".jpg") 
                              || s.EndsWith(".png") 
                              || s.EndsWith(".gif") 
                              || s.EndsWith(".bmp")
                    ).ToArray();

var imageArray = new Uri[files.Length];
var files = Directory.EnumerateFiles(
    @"C:\Users\doggoz\Documents\VisualStudio2015\Projects\somethinngggggg\", 
    "*.*", SearchOption.TopDirectoryOnly)
        .Where(s => 
            s.EndsWith(".jpeg") || 
            s.EndsWith(".jpg") || 
            s.EndsWith(".png") || 
            s.EndsWith(".gif") || 
            s.EndsWith(".bmp"));

Uri[] imageArray = new Uri[files.Count()];
或者,您可以将结果转换为Uri数组内联:

Uri[] imageArray = Directory.EnumerateFiles(
    @"C:\Users\doggoz\Documents\VisualStudio2015\Projects\somethinngggggg\", 
    "*.*", SearchOption.TopDirectoryOnly)
        .Where(s => 
            s.EndsWith(".jpeg") || 
            s.EndsWith(".jpg") || 
            s.EndsWith(".png") || 
            s.EndsWith(".gif") || 
            s.EndsWith(".bmp"))
        .Select(filePath => new Uri(filePath))
        .ToArray();

您可以保留现有代码,只需将行按相反的顺序排列即可。这样,您就可以提前进行文件枚举,并且可以访问
Count()
方法:

var files = Directory.EnumerateFiles("C:\\Users\\doggoz\\Documents\\VisualStudio2015\\Projects\\somethinngggggg\\", "*.*", SearchOption.TopDirectoryOnly)
                     .Where(s => s.EndsWith(".jpeg") 
                              || s.EndsWith(".jpg") 
                              || s.EndsWith(".png") 
                              || s.EndsWith(".gif") 
                              || s.EndsWith(".bmp")
                    ).ToArray();

var imageArray = new Uri[files.Length];
var files = Directory.EnumerateFiles(
    @"C:\Users\doggoz\Documents\VisualStudio2015\Projects\somethinngggggg\", 
    "*.*", SearchOption.TopDirectoryOnly)
        .Where(s => 
            s.EndsWith(".jpeg") || 
            s.EndsWith(".jpg") || 
            s.EndsWith(".png") || 
            s.EndsWith(".gif") || 
            s.EndsWith(".bmp"));

Uri[] imageArray = new Uri[files.Count()];
或者,您可以将结果转换为Uri数组内联:

Uri[] imageArray = Directory.EnumerateFiles(
    @"C:\Users\doggoz\Documents\VisualStudio2015\Projects\somethinngggggg\", 
    "*.*", SearchOption.TopDirectoryOnly)
        .Where(s => 
            s.EndsWith(".jpeg") || 
            s.EndsWith(".jpg") || 
            s.EndsWith(".png") || 
            s.EndsWith(".gif") || 
            s.EndsWith(".bmp"))
        .Select(filePath => new Uri(filePath))
        .ToArray();

不,不,不,不,不,不,不。