Как я могу Concat 2 SelectList списки? - PullRequest
0 голосов
/ 12 октября 2018

Мне нужно объединить 2 списка выбора в один, Concat () хочет преобразование, которое я не могу понять.

SelectList sl1 = new SelectList(Cust.GetCustListOne(), "Id", "Last", 2);
SelectList sl2 = new SelectList(Cust.GetCustListTwo(), "Id", "Last", 4);
SelectList sl3 = sl2.Concat(sl1);

Ошибка в строке 3: CS0266 Невозможно неявно преобразовать тип IEnumerable в SelectList.Существует явное преобразование (вам не хватает приведения?)

Приведение в следующем порядке

SelectList sl3 = (SelectList)sl2.Concat(sl1);

завершается неудачно со следующей ошибкой

InvalidCastException: Unableдля приведения объекта типа <ConcatIterator>d__59-1[System.Web.Mvc.SelectListItem] к типу System.Web.Mvc.SelectList

Какое приведение мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Использовать .union в обоих списках выбора

    List<person> persons = new List<person>();
    persons.Add(new person() { id = 1, name = "Abel" });
    persons.Add(new person() { id = 1, name = "Joseph" });

    List<person> persons2 = new List<person>();
    persons2.Add(new person() { id = 1, name = "Stacey" });
    persons2.Add(new person() { id = 1, name = "John" });

    SelectList s1 = new SelectList(persons);
    SelectList s2 = new SelectList(persons2);
    SelectList s3 = new SelectList(s1.Union(s2));
0 голосов
/ 12 октября 2018

Это связано с тем, что System.Linq.Enumerable.Concat возвращает IEnumerable и, как следует из ошибки, не может неявно преобразовать его во что-то, что не имеет преобразования.

Изменить:

SelectList sl3 = sl2.Concat(sl1);

Для следующего, который работает, потому что конструктор SelectList принимает IEnumerable

SelectList sl3 = new SelectList(sl2.Concat(sl1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...