Сбой простой инструкции LINQ - почему?

У меня есть следующие 2 строки;

var currentPage = Directory.GetFiles(@"D:\mydir", "*.pdf")
 .Skip((pageNum - 1) * pageSize).Take(pageSize);

var allItems = currentPage.OrderBy(c => c)
 .Select(c => new ListViewItem(c)).ToArray();

Вышеуказанная строка не работает с "CS1502: наилучшее перегруженное соответствие метода для" System.Web.UI.WebControls.ListViewItem.ListViewItem(System.Web.UI.WebControls.ListViewItemType) "содержит некоторые недопустимые аргументы". Ошибка, согласно VS2010, из "нового ListViewItem (c)".

Я думаю, что мне не хватает чего-то действительно поучительного, но я просто не вижу его.

5 ответов

Похоже, вы пытаетесь установить bindView в этот массив указанных имен файлов. Вы пытались установить DataSource в ListView?

Как это:

myListView.DataSource = null;

var currentPage = Directory.GetFiles(@"D:\mydir", "*.pdf")
 .Skip((pageNum - 1) * pageSize).Take(pageSize);

var dataArray = currentPage.OrderBy(c => c).ToArray();

myListView.DataSource = dataArray;
myListView.DataBind();

Подробнее о привязке к IEnumerable: http://forums.asp.net/t/1319474.aspx/1

Надеюсь, это поможет...


Directory.GetFiles() возвращает массив строк. Затем вы берете эти строки и пытаетесь создать массив System.Web.UI.WebControls.ListViewItem, передав строку в конструктор ListViewItem.

Проблема заключается в отсутствии конструктора ListViewItem который принимает строку.

Единственный конструктор принимает ListViewItemType

public ListViewItem(
 ListViewItemType itemType
)

Вот почему вы получили ошибку

Наилучшее перегруженное соответствие метода для System.Web.UI.WebControls.ListViewItem.ListViewItem(System.Web.UI.WebControls.ListViewItemType) имеет некоторые недопустимые аргументы


var allItems = currentPage.OrderBy(c => c).Выберите (c => новый ListViewItem ((ListViewItemType) Enum.Parse(typeof (ListViewItemType), c, true))). ToArray();

Избавьтесь от ошибки, не знаете, поможет ли это вам


Вы пытаетесь передать ListViewItem результат из предыдущего запроса, который является строкой (имени файла). В ListViewItem нет конструктора, который согласен с этим.

Попробуйте прочитать строки в списке или что-то еще, а затем добавить его в качестве источника данных в элемент управления ListView.


Если это winforms, вы должны удалить using System.Web.UI.WebControls;и убедитесь, что у вас есть using System.Windows.Forms;вместо.

Если это asp.net, вы не можете создать экземпляр ListViewItem со String в качестве параметра для конструктора. См. Здесь, в MSDN для получения дополнительной информации о конструкторе.

licensed under cc by-sa 3.0 with attribution.