0

我正在寻找一种方法来通过设置的 ID 获取对象的名称。
名称的第一部分始终相同,例如。“评级”,然后我想将它与计数整数的当前值连接起来,例如。"Rating" + i.
是否有任何方法可以连接部分对象名称和变量以构造对象名称,或者它只是遍历数组的一种情况?

4

2 回答 2

1

假设对象的名称表示类名,您可以执行以下操作:

var typeName = this.GetType().Name;

for (int i = 0; i < 5; i++)
{
    Debug.WriteLine(String.Format("{0}{1}", typeName, i));
}

当然,您需要更改代码以满足您的需要,但是对于名为 的类Test,它会将其打印到调试输出窗口

Test0
Test1
Test2
Test3
Test4
于 2014-10-20T11:51:06.983 回答
0

通常,要投影对象集合,您会使用 LINQ,或者更具体地说是IEnumerable.Select. 在这种情况下,您将 a intId类型的属性int)投影到 astring中,因此一般方法是:

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));
于 2014-10-20T13:26:56.977 回答