Невозможно привести объект типа WhereListIterator <system.web.Mvc.ListItem> к типу system.web.mvc.listitem. - PullRequest
1 голос
/ 02 декабря 2008

У меня есть SelectList, который я сначала проверяю для выбранного значения! = Null, а затем хочу использовать это выделенное значение в предложении where для фильтра. Вот так:

if(searchBag.Qualities.SelectedValue != null){
    ListItem selected = (ListItem)searchBag.Qualities.SelectedValue;
}

Я сделал приведение в виде отдельной бесполезной линии, чтобы точно определить проблему. Это дает мне

Невозможно привести объект типа «WhereListIterator`1 [System.Web.Mvc.ListItem]» к типу «System.Web.Mvc.ListItem».

Weuh

- EDIT -
Это было действительно потому, что были сделаны несколько выборов. Это произошло потому, что при создании я установил выбранное значение в theItems.Where (i => i.someCriterea) и забыл поставить .FirstOrDefault () в конце. Завершая в возможности нескольких ответов. Так как это был IEnumerable, это был ленивый список и, следовательно, WhereListIterator, я думаю. Я решил это, просто поставив FirstOrDefault в конце.

Ответы [ 3 ]

0 голосов
/ 02 декабря 2008

SelectedValue не является ListItem, это значение выбранного элемента списка. Итак, учитывая это:

var selectList = new SelectList(companiesList, "Id", "Name", companiesList[3]);

selectList.SelectedValue будет равно companiesList [3] .Id. Если вы хотите фактический элемент списка, вы можете сделать что-то вроде этого:

ListItem selected = selectList.GetListItems().Where(x => x.Value == selectList.SelectedValue.ToString())

Просто любопытно, зачем вам выбранный элемент списка?

0 голосов
/ 02 декабря 2008

Это уже объяснено, но вот еще одно предложение о том, как получить то, что вы ищете:

if(searchBag.Qualities.SelectedValue != null){
    ListItem selected = (ListItem)searchBag.Qualities.SelectedValue.FirstOrDefault();
}
0 голосов
/ 02 декабря 2008

Я предполагаю, что SelectList позволяет вам выбрать более 1 элемента?

Итак, SelectedValue, вероятно, список? Не 1 список.

Примените к:

 WhereListIterator<ListItem> selected = (WhereListIterator<ListItem>)searchBag.Qualities.SelectedValue;

вместо и посмотрим, какие свойства у вас там есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...