在C#中使用字符串和部分对象名称的串联
本文关键字:对象 字符串 | 更新日期: 2023-09-27 18:27:05
我正在寻找一种方法,通过设置为的ID获得对象的名称。
名称的第一部分总是相同的,例如"Rating",然后我想将其与计数整数的当前值连接起来,例如"Rating" + i
有没有任何方法可以连接部分对象名称和变量来构造对象名称,或者只是在数组中迭代?
假设对象的名称意味着类名,您可以这样做:
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
(类型为int
的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));