Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
8 / 8 / 3
Регистрация: 20.05.2012
Сообщений: 174

Не работает IEnumerable<T>.Concat(): последовательности не объединяются

17.04.2015, 08:43. Показов 2412. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Concat отказывается объединять последовательности... Либо выдаёт exception, либо не объединяет. Где я не прав?

C#
1
2
3
4
5
6
7
8
dynamic temp = null;
IEnumerable<DocumentReference> references = null;
 
//тут инициализация и первое заполнение references
 
temp = (temp as IEnumerable<IDraftReference>).OfType<DocumentReference>().Cast<DocumentReference>();
if(temp != null)
references.Concat<DocumentReference>((IEnumerable<DocumentReference>)temp);

Во время выполнения Concat(), references != null... Почему отказывается присоединять temp к references?

Подскажите, пожалуйста
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2015, 08:43
Ответы с готовыми решениями:

Concat не работает
...и я догадываюсь почему, но что делать не знаю: var titles = document.getElementsByClassName(&quot;title&quot;); var contents =...

Цикл foreach, проход по IEnumerable и IEnumerable.ToList()
Здравствйте, уважаемые форумчане, вопрос по реализации цикла foreach. Два куска кода: foreach (var variable in...

Проверить корректность реализации IEnumerable<T> и IEnumerable
Гуру, выручайте! Разбираюсь в создании обобщенной коллекции и запутался в том, как реализовать интерфейсы IEnumerable&lt;T&gt; и...

4
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
17.04.2015, 09:00
Kamerton,
C#
1
references = references.Concat<DocumentReference>((IEnumerable<DocumentReference>)temp);
ЗЫ
И уберите этот dynamic, зачем он вам?
0
8 / 8 / 3
Регистрация: 20.05.2012
Сообщений: 174
17.04.2015, 10:07  [ТС]
Storm23,

Да, я вот тоже задумался... Убрал, засунул конкатинацию в следующий метод:

C#
1
2
3
4
5
6
void ConcatEnumerables(IEnumerable<DocumentReference> baseCollection, IEnumerable<DocumentReference> concatedCollection) 
{
    if(baseCollection != null && concatedCollection != null)
        if(concatedCollection.Count() > 0)
            baseCollection.Concat(concatedCollection);
}
Метод отрабатывает, обе коллекции не пустые, изменений в baseCollection нет...

П.С.
объекты в добавляемой коллекции дочерние к DocumentReference... Так нельзя чтоли делать?

Добавлено через 35 минут
Пробую так:

C#
1
2
3
var references = new List<DocumentReference>();
var temp = specification.Details.Select(d => d.Draft).OfType(DocumentReference).ToList();
references.Concat(temp);
Так же без изменений... Ошибок нет, temp элементы содержит, reference - нет...

Добавлено через 20 минут
В итоге, при переборе коллекции по одному элементу, элементы добавляются.

Пришлось писать следующее:

C#
1
2
3
4
5
6
7
void ConcatList(List<DocumentReference> list, IEnumerable<DocumentReference> concatedCollection)
{
    if(list != null && concatedCollection != null)
        if(concatedCollection.Count() > 0)
            foreach(DocumentReference docRef in concatedCollection)
                 list.Add(docRef) ;
}
Так работает.

Почему в моём случае не работал метод Concat() - я так и не понял...

Если кто-то знает ответ - буду благодарен, если объяснит
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
17.04.2015, 10:34
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Kamerton Посмотреть сообщение
Почему в моём случае не работал метод Concat() - я так и не понял...
Я же вам написал - Concat делает изменения не в текущей коллекции а возвращает новую коллекцию:
C#
1
references = references.Concat<DocumentReference>((IEnumerable<DocumentReference>)temp);
1
8 / 8 / 3
Регистрация: 20.05.2012
Сообщений: 174
17.04.2015, 10:51  [ТС]
Блин....

Спасибо, опять проглядел очевидное
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2015, 10:51
Помогаю со студенческими работами здесь

Foreach не работает с переменными типа IEnumerable
Добрый вечер. Пытаюсь разобраться с ошибкой: foreach не работает с переменными типа IEnumerable ,поскольку IEnumerable не содержит...

Сделать преобразование из string в IEnumerable<XElement>, или как в IEnumerable<XElement> формировать команду?
такая команда работает var v= xDoc.Root.Elements(&quot;root&quot;).Elements(&quot;file&quot;).Elements(&quot;valuta&quot;).Elements(); как её же сформировать...

Ошибка при использовании IEnumerable<T>: Использование универсального типа IEnumerable требует аргумент типа 1
Доброго Вам времени суток. Помогите решить следующую задачку. На строке IEnumerable&lt;Device&gt; = deviceContext.Devices; возникает...

Зачем IEnumerable наследоваться от IEnumerable<T>?
/* * Created by SharpDevelop. * User: Admin * Date: 07.09.2018 * Time: 17:26 * * To change this template use Tools |...

Не работает выпадающий список. Ошибка “Нет элемента ViewData типа ”IEnumerable <SelectListItem>“, который имеет ключ имя
Контроллер: public ActionResult Index() { List&lt;Books&gt; authors; using (Model1 db = new Model1()) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru