2014-10-20 47 views
0

我正在尋找一種方法來通過它已設置的ID來獲取對象的名稱。
名稱的第一部分總是相同的,例如。 「評級」,然後我想連接它與計數整數的當前值,例如。 "Rating" + i
是否有任何方法連接部分對象名稱和變量來構造一個對象名稱,或者它只是一個迭代通過數組的情況?在C中使用與字符串和部分對象名稱的串接

+3

您需要提供上下文/示例,因爲我不認爲它清楚您擁有什麼以及想要獲得什麼。 – 2014-10-20 11:43:25

+0

你可以使用Linq,但是在底線它會反覆遍歷list /數組的成員。 – Amorphis 2014-10-20 11:46:00

回答

1

假設對象的名字的意思是類的名稱,你可以做像這樣的東西:

當然,你需要更改代碼,以滿足您的需求,但對於一類名爲Test ,將打印此到調試輸出窗口

Test0 
Test1 
Test2 
Test3 
Test4 
+0

這似乎是正確的方法,但它可以與' .Text'或' .Value' @ Joeb454 – matt 2014-10-20 13:26:40

+0

一起實現您的意思是當你有一個類的實例(例如'Rating'對象),或者沒有該對象的實例可用? – Joeb454 2014-10-20 13:29:23

+0

與一個實例可用/創建,例如。通過(「lblCounter」+ i).Text訪問lblCounter1.Text bu? – matt 2014-10-20 14:03:18

0

一般來說,項目對象的集合,你可以使用LINQ,或者更具體IEnumerable.Select。在這種情況下,你是投射intint類型的Id屬性)爲string,所以一般的方法是:

public static IEnumerable<string> GetNamesFromIds(IEnumerable<int> ids) 
{ 
    return ids.Select(i => "Rating" + i); 
} 

因此,假設一類是這樣的:

public class Rating 
{ 
    public int Id { get; set; } 
} 

你可以簡單地使用:

// get the list of ratings from somewhere 
var ratings = new List<Rating>(); 

// project each Rating object into an int by selecting the Id property 
var ids = ratings.Select(r => r.Id); 

// project each int value into a string using the method above 
var names = GetNamesFromIds(ids); 

或總體上任何IEnumerable<int>將工作一樣:

// get ids from a list of ratings 
names = GetNamesFromIds(ratings.Select(r => r.Id)); 

// get ids from an array 
names = GetNamesFromIds(new [] { 1, 2, 3, 4, 5}); 

// get ids from Enumerable.Range 
names = GetNamesFromIds(Enumerable.Range(1, 5));