Я новичок в LINQ. Вот код, который у меня есть:
public class Folder
{
public Folder(string path)
{
string[] files = Directory.GetFiles(path);
IList<FileInfo> fis = new List<FileInfo>();
files.SomeMethod(x => fis.Add(new FileInfo(x)));
}
}
Какое правильное имя метода заменить SomeMethod на это, чтобы заставить его работать? Я бы просто хотел здесь более сжатый способ написания цикла.
5 ответов
Похоже, что вы ищете что-то вроде функции ForEach в List. Вы можете сделать следующее ...
files.ToList().ForEach(x => fis.Add(new FileInfo(x)));
Или вы могли бы сделать что-то вроде этого как более прямой подход
IList<FileInfo> fis = (from f in Directory.GetFiles(path)
select new FileInfo(f)).ToList();
Или...
IList<FileInfo> fis = Directory.GetFiles(path).Select(s => new FileInfo(s)).ToList();
// or
IList<FileInfo> fis = Directory.GetFiles(path)
.Select(s => new FileInfo(s))
.ToList();
Или - вообще без использования linq, как насчет этого? ...
IList<FileInfo> fis = new List<FileInfo>(new DirectoryInfo(path).GetFiles());
Вы можете использовать статический метод ForEach:
Array.ForEach(x => fis.Add(new FileInfo(x)));
Однако вы можете легко заменить всю функцию этой одной строкой:
IList<FileInfo> fis = Directory.GetFiles(path).
Select(f => new FileInfo(f)).ToList();
var fis =
new List<FileInfo>(
from f in Directory.GetFiles(path) select new FileInfo(f));
Для этого уже есть метод DirectoryInfo:
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] fis = di.GetFileSystemInfos();
Если вам нужен список, используйте Enumerable.ToList.
string[] files = Directory.GetFiles(path);
IList<FileInfo> fis = new List<FileInfo>();
Array.ForEach(files, x => fis.Add(new FileInfo(x)));
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.