2013-10-02 61 views
0

我有一個這樣的對象:獲取對象的數組中的一個字段的數組包含字段

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

而且我有這樣的對象數組... SavedFileInfo[] mySFI;

如何我現在可以從我的SavedFileInfo對象集合中獲取文件名字段的數組嗎?(例如string[] filenames)?

回答

5

個人而言,我會使用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; } 
} 
+0

我正在使用FileHelpers(www.filehelpers.com)庫來讀取和寫入文件。這個庫對於想要使用字段而不是屬性是挑剔的。否則我會完全同意你的看法。 –

+2

@MichaelMankus:這是一個非常糟糕的跡象,國際海事組織。我會對圖書館如此糟糕的設計決策非常謹慎......這對實施來說並不是一個好兆頭。根據你的路徑走多遠,你可能想看看是否有其他選擇。 –

0
SavedFileInfo[] mySFI; 
var fileNameArr = mySFI.Select(p=>p.Filename).ToArray(); 
1
String[] fileNames = new string[mySFI.Length]; 
for (int i = 0; i < mySFI.Length; i++) 
    fileNames[i] = mySFI[i].Filename; 

我可能失去了一些東西,但如果你真的是「如何」去做,而不是「有什麼最簡單的方法「(爲此 - 請參閱Skeet的答案),那麼知道如何以非linq方式也是很重要的。如果我誤解了你 - 我的道歉。

相關問題