如何合并2个SelectList列表?

时间:2018-10-11 22:41:18

标签: c# asp.net-mvc

我需要将2个SelectList合并为一个,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:无法将类型<ConcatIterator>d__59-1[System.Web.Mvc.SelectListItem]的对象转换为类型System.Web.Mvc.SelectList

我在这里想念什么?

2 个答案:

答案 0 :(得分:2)

这是因为System.Linq.Enumerable.Concat返回IEnumerable,并且正如错误所暗示的那样,它无法将其隐式转换为没有转换的内容。

更改:

SelectList sl3 = sl2.Concat(sl1);

由于SelectList构造函数接受IEnumerable

,以下操作可行
SelectList sl3 = new SelectList(sl2.Concat(sl1));

答案 1 :(得分:-1)

在两个SelectList上都使用.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));