0

私はそれ自体を説明する非常に単純なコードを持っています。

List<string> Files = new List<string>( Directory.EnumerateFiles(PathLocation));

しかし、私は今、人生を複雑にしたいので、ファイルオブジェクトがあります。

public class File
{
    public int FileId { get; set; }
    public string Filename { get; set; }
}

クラスの文字列プロパティにデータを入力する最適な方法はありますか?つまり、foreachループなどを使用するよりも良い方法はありますか?

4

4 に答える 4

5

LINQSelectを使用して、foreachループを置き換えることができます。

List<File> files = Files.Select(s => new File() { FileId = id, Filename = s})
                        .ToList();

Listただし、コードを最適化するために新しいものを作成する必要はありません。

List<File> files = Directory.EnumerateFiles(PathLocation)
                            .Select(s => new File() { FileId = id, Filename = s})
                            .ToList();

MSDNはこちら

于 2012-09-28T08:56:47.430 に答える
5

もちろん:

List<File> Files = Directory.EnumerateFiles(PathLocation).Select(f=> new File { FileId = /*...*/, Filename = f }).ToList();
于 2012-09-28T08:56:52.947 に答える
4

Filesの内容をList<File>:にマップできます。

var files = Files.Select(f => new File { Filename = f })
                 .ToList();

LINQ構文を使用した場合も同じです。

var query = from f
            in Files 
            select new File { Filename = f };

var files = query.ToList();
于 2012-09-28T08:58:08.287 に答える
1
List<File> bigList;
var stringList = bigList.Select(f=>f.Filename);
于 2012-09-28T08:56:18.013 に答える