获取包含该字段的对象数组中的字段数组

本文关键字:数组 字段 包含该 对象 获取 | 更新日期: 2023-09-27 18:33:34

我有一个这样的对象:

public class SavedFileInfo
{
    public String Address;
    public Int32 DataPort;
    public Int32 AudioPort;
    public String Description;
    public String Filename;
}

我有这样一系列这样的对象... SavedFileInfo[] mySFI;

现在如何从我的SavedFileInfo对象集合中获取文件名字段的数组(例如string[] filenames)?

获取包含该字段的对象数组中的字段数组

我个人会使用 LINQ:

var files = mySFI.Select(x => x.Filename)
                 .ToArray();

或者,有Array.ConvertAll

var files = Array.ConvertAll(mySFI, x => x.Filename);

顺便说一句,我强烈建议您使用属性而不是字段。更改代码以使用自动实现的属性非常容易:

public class SavedFileInfo
{
    public String Address { get; set; }
    public Int32 DataPort { get; set; }
    public Int32 AudioPort { get; set; }
    public String Description { get; set; }
    public String Filename { get; set; }
}
String[] fileNames = new string[mySFI.Length];
for (int i = 0; i < mySFI.Length; i++)
    fileNames[i] = mySFI[i].Filename;

我可能在这里遗漏了一些东西,但如果你真的是指"如何"做到这一点,而不是"最简单的方法是什么"(为此 - 参见 Skeet 的答案),那么知道如何以非 linq 的方式做到这一点也很重要。如果我误解了你 - 我很抱歉。

SavedFileInfo[] mySFI;
var fileNameArr = mySFI.Select(p=>p.Filename).ToArray();