를 순환하는 대신 선택에 값을 복제 :LINQ 표현은 내가 폴더에 포함 된 파일에 대한 몇 가지 정보를 저장하는 클래스가 그들에게
static class fileList
{
public static IEnumerable<files> fL;
}
public class files
{
private static string _name = "";
private static long _size;
private static DateTime _creationDate;
public string name
{
get { return _name; }
set { _name = value; }
}
public long size
{
get { return _size; }
set { _size = value; }
}
public DateTime creationDate
{
get { return _creationDate; }
set { _creationDate = value; }
}
}
파일 목록이 다음 채워집니다 통해 :
fileList.fL = Directory.EnumerateFiles(folder, "*.*", SearchOption.AllDirectories)
.Select(x => new
{
name = x.ToString(),
size = new FileInfo(x).Length,
creationDate = new FileInfo(x).CreationTime
});
이제 반환 된 구조는 폴더의 IEnumerable (예) 3 파일이됩니다.
이 시점까지 모든 것이 효과적입니다. 내가 선언 형식을 반환하려고하지
var fL = Directory.EnumerateFiles(folder, "*.*", SearchOption.AllDirectories);
fileList.fL = fL.Select(x => new files()
{
name = x.ToString(),
size = new FileInfo(x).Length,
creationDate = new FileInfo(x).CreationTime
});
익명의 하나가이 돌아갑니다 3 개 IEnumberable 항목을하지만, 그들 모두가 동일한 정보를 포함 할 때 문제가 발생합니다. 지금까지 볼 수있는 것은 EnumerateFiles 메서드에서 반환 된 마지막 파일 항목입니다.
형식을 반환하려는 이유는 이러한 정보가 DataGridView에 저장되고 데이터 원본이 익명 형식이기 때문에 형식이 ReadOnly이므로 변경 작업을 수행 할 수 없기 때문입니다.
정적 수정자를 배경 필드에서 제거하여 보았습니까? – Peeyush