2014-10-20 3 views
0

Я ищу способ получить имя объекта с помощью идентификатора, к которому он был установлен.
Первая часть названия всегда одна и та же, например. «Рейтинг», а затем я хотел бы объединить его с текущим значением целочисленного числа, например. "Rating" + i.
Есть ли способ объединить имена и переменные частичных объектов для создания имени объекта или это просто случай итерации через массив?Использование конкатенации со строками и именами частичных объектов в C#

+3

Необходимо указать контекст/пример, поскольку я не думаю, что он ясно, что у вас есть и что вы хотите получить. –

+0

Вы можете использовать Linq, но в нижней строке он все равно будет перебирать элементы списка/массива. – Amorphis

ответ

1

Предполагая, что имя объекта означает имя класса, вы могли бы сделать что-то вроде этого:

Естественно, вы должны изменить код, чтобы удовлетворить ваши потребности, но для класса с именем Test , что напечатает к выходному Debug окна

Test0 
Test1 
Test2 
Test3 
Test4 
+0

это, кажется, правильный метод, но может ли он быть реализован вместе с ' .Text' или' .Value' @ Joeb454 – matt

+0

Вы имеете в виду, когда у вас есть экземпляр вашего класса (например, объект «Рейтинг») или без экземпляр доступного объекта? – Joeb454

+0

с экземпляром, доступным/созданным, например. lblCounter1.Text, доступ к которому осуществляется через ("lblCounter" + i) .Text? – matt

0

Вообще, проецировать коллекцию объектов, можно использовать LINQ, или более конкретно IEnumerable.Select. В этом случае, вы проецирование intId свойства типа int) в 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)); 

 Смежные вопросы

  • Нет связанных вопросов^_^