Сделать проще при создании списка

Рейтинг: 1Ответов: 1Опубликовано: 02.05.2015

Сейчас реализовано так (ControlType - enum value):

private readonly ControlType[] _types;

private ComboBoxItem[] GetItems()
{
    ComboBoxItem[] items = new ComboBoxItem[_types.Length];
    int i = 0;

    foreach (ControlType type in _types)
    {
        ComboBoxItem item = new ComboBoxItem(type.ToString());
        items[i++] = item;
    }

    return items;
}

Как-то громоздко, можно же, наверно, и в одну строчку это сделать с помощью LINQ? Плюс если можно, то как в этом случае будет с производительностью?

Ответы

▲ 5Принят

Видимо, так:

return _types.Select(t => new ComboBoxItem(t.ToString())).ToArray();

Однако использовать ToArray не рекомендуется, потому что выделений памяти больше, чем могло бы быть. Можно вызвать ToList. А можно вообще вернуть IEnumerable<ComboBoxItem>, особенно если это приватный метод, и вы контролируете его использование.

На фоне создания ComboBoxItem и прочего производительностью LINQ можно пренебречь. Не занимайтесь преждевременной оптимизацией.