Member 13974276 Ответов: 2

Concat() не работает в C#


Я создал объект типа List и объединяю в него другую коллекцию типа IEnumerable, но объект всегда показывал нулевую запись во время отладки.

Когда я отлаживал, количество obj было равно нулю
obj = 0
Где я ошибся? Или есть другой способ сделать это? Я даже пытался Add() но это не сработало

Что я уже пробовал:

public IEnumerable<Dealer> GetDealerData(param)
{
    var obj = new List<Dealer>();

    foreach(var item in param)
    {
        var ob = ObjectFactory.GetInstance<IDealerRepository>().MyFunc(item.Id);
        //ob is of type IEnumerable<Dealer>

        obj.Concat(ob);
    }

    return obj;
}

2 Ответов

Рейтинг:
16

Member 13974276

Все было прекрасно. Мне пришлось использовать AddRange() вместо Concat()

obj.AddRange(ob);


Richard Deeming

Действительно - Функция concat[^]- это метод расширения, который возвращает конкатенированную последовательность. Он никоим образом не изменяет входную последовательность.

Рейтинг:
1

OriginalGriff

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

var obj = new List<Dealer>();
а посмотрите на содержание книги param чтобы узнать, сколько объектов он содержит.

На первый взгляд, нет. Никаких предметов, никаких foreach выполнение тела, никаких объектов, добавленных в коллекцию. Но вы можете подтвердить это только с помощью кода, работающего с вашими данными, поэтому вам нужен отладчик для подтверждения, а затем используйте трассировку стека, чтобы выяснить, почему. Но даже в этом случае Concat не изменяет исходную коллекцию, поэтому вам нужно будет сохранить результат, чтобы добраться куда угодно.

Извините, но мы не можем сделать это для вас!