在C中使用与字符串和部分对象名称的串接
问题描述:
我正在寻找一种方法来通过它已设置的ID来获取对象的名称。
名称的第一部分总是相同的,例如。 “评级”,然后我想连接它与计数整数的当前值,例如。 "Rating" + i
。
是否有任何方法连接部分对象名称和变量来构造一个对象名称,或者它只是一个迭代通过数组的情况?在C中使用与字符串和部分对象名称的串接
答
假设对象的名字的意思是类的名称,你可以做像这样的东西:
当然,你需要更改代码,以满足您的需求,但对于一类名为Test
,将打印此到调试输出窗口
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));
您需要提供上下文/示例,因为我不认为它清楚您拥有什么以及想要获得什么。 – 2014-10-20 11:43:25
你可以使用Linq,但是在底线它会反复遍历list /数组的成员。 – Amorphis 2014-10-20 11:46:00