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

本文关键字:对象 字符串 | 更新日期: 2023-09-27 18:27:05

我正在寻找一种方法,通过设置为的ID获得对象的名称。
名称的第一部分总是相同的,例如"Rating",然后我想将其与计数整数的当前值连接起来,例如"Rating" + i
有没有任何方法可以连接部分对象名称和变量来构造对象名称,或者只是在数组中迭代?

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

假设对象的名称意味着类名,您可以这样做:

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

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

Test0
Test1
Test2
Test3
Test4

通常,要投影一个对象集合,可以使用LINQ,或者更具体地说是IEnumerable.Select。在这种情况下,您将int(类型为intId属性)投影到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));