【问题标题】:How can I rewrite this code assigning a List of String to a Collection of an Object of String?如何重写此代码,将字符串列表分配给字符串对象的集合?
【发布时间】:2020-12-26 06:04:51
【问题描述】:

如何重写此代码以将数组列表的元素一次分配给对象的元素?

List<string> fileEntries = new List<string>
(Directory.EnumerateFileSystemEntries("/storage/emulated/0/Download"));

FileLogs = new ObservableCollection<FileLog> { };

foreach (string fileName in fileEntries)
{
    FileLogs.Add(new FileLog { File = fileName });
}

【问题讨论】:

    标签: c# arrays object arraylist observablecollection


    【解决方案1】:

    你的意思是这样的吗?:

    FileLogs = new ObservableCollection<FileLog>(
        Directory.EnumerateFileSystemEntries("/storage/emulated/0/Download")
            .Select(fileName => new FileLog { File = fileName })
    );
    

    它使用在单个语句中接受IEnumerable&lt;FileLog&gt; 的构造函数创建一个ObservableCollection&lt;FileLog&gt;

    它使用 LINQ Select 方法将从Directory.EnumerateFileSystemEntries 返回的IENumerable&lt;string 转换为IEnumerable&lt;FileLog&gt;

    【讨论】:

    • 让我在我的程序中尝试一下。 FileSystemEntries 中有多个文件。我只是不知道如何从文件列表中分配给我的对象列表。
    • @zawhtut:就像我向你展示的那样。此代码将从Directory.EnumerateFileSystemEntries 返回的每个字符串添加一个FileLogObservableCollection&lt;FileLog&gt;
    • 所以。有没有不使用 LINQ 的方法?基本上它不能将 `IEnumerable 转换为 IEnumerable。 FileLog 对象只有一个字符串类型元素。只是好奇。
    • 如果没有 LINQ,您必须使用循环手动遍历 IEnumerable&lt;string&gt;。这就是 LINQ 方法为您所做的。
    猜你喜欢
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    相关资源
    最近更新 更多