在C中使用与字符串和部分对象名称的串接

问题描述:

我正在寻找一种方法来通过它已设置的ID来获取对象的名称。
名称的第一部分总是相同的,例如。 “评级”,然后我想连接它与计数整数的当前值,例如。 "Rating" + i
是否有任何方法连接部分对象名称和变量来构造一个对象名称,或者它只是一个迭代通过数组的情况?在C中使用与字符串和部分对象名称的串接

+3

您需要提供上下文/示例,因为我不认为它清楚您拥有什么以及想要获得什么。 – 2014-10-20 11:43:25

+0

你可以使用Linq,但是在底线它会反复遍历list /数组的成员。 – Amorphis 2014-10-20 11:46:00

假设对象的名字的意思是类的名称,你可以做像这样的东西:

当然,你需要更改代码,以满足您的需求,但对于一类名为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

一般来说,项目对象的集合,你可以使用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));