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

C# 获取包含字段的对象数组中的字段数组,c#,.net,arrays,object,field,C#,.net,Arrays,Object,Field,我有一个这样的物体: public class SavedFileInfo { public String Address; public Int32 DataPort; public Int32 AudioPort; public String Description; public String Filename; } 我有一组像这样的物体SavedFileInfo[]mySFI 现在如何从我的SavedFileInfo对象集合中获取文件名字段数组(

我有一个这样的物体:

public class SavedFileInfo
{
    public String Address;
    public Int32 DataPort;
    public Int32 AudioPort;
    public String Description;
    public String Filename;
}
我有一组像这样的物体<代码>SavedFileInfo[]mySFI


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

var files = mySFI.Select(x => x.Filename)
                 .ToArray();
此外,还有:

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

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; }
}

就我个人而言,我会使用LINQ:

var files = mySFI.Select(x => x.Filename)
                 .ToArray();
此外,还有:

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

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[]filename=新字符串[mySFI.Length];
for(int i=0;i
我可能在这里遗漏了一些东西,但如果你真的是指“如何”去做,而不是“最简单的方法是什么”(为此,请参见Skeet的答案),那么知道如何以非linq的方式去做也很重要。如果我误解了你-我道歉。

字符串[]文件名=新字符串[mySFI.Length]; for(int i=0;i
我可能在这里遗漏了一些东西,但如果你真的是指“如何”去做,而不是“最简单的方法是什么”(为此,请参见Skeet的答案),那么知道如何以非linq的方式去做也很重要。如果我误解了您的意思,我深表歉意。

我正在使用FileHelpers(www.FileHelpers.com)库读取和写入文件。该库对于希望使用字段而不是属性非常挑剔。否则我会完全同意你的意见。@MichaelMankus:在我看来,这是一个非常糟糕的开始。我会非常小心那些设计决策如此糟糕的图书馆。。。这对实施来说不是个好兆头。根据您所处的位置,您可能希望查看是否有其他选择。我正在使用FileHelpers(www.FileHelpers.com)库读取和写入文件。该库对于希望使用字段而不是属性非常挑剔。否则我会完全同意你的意见。@MichaelMankus:在我看来,这是一个非常糟糕的开始。我会非常小心那些设计决策如此糟糕的图书馆。。。这对实施来说不是个好兆头。取决于你在这条路上走了多远,你可能想看看是否有其他选择。
String[] fileNames = new string[mySFI.Length];
for (int i = 0; i < mySFI.Length; i++)
    fileNames[i] = mySFI[i].Filename;