Простое утверждение LINQ не удалось - почему? - PullRequest
0 голосов
/ 10 марта 2012

У меня есть следующие 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();

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

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

Ответы [ 5 ]

2 голосов
/ 10 марта 2012

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

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

Конструктор only принимает ListViewItemType

public ListViewItem(
    ListViewItemType itemType
)

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

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

0 голосов
/ 10 марта 2012

Похоже, вы пытаетесь установить привязку ListView к этому массиву указанных имен файлов. Вы пытались установить источник данных 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

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

0 голосов
/ 10 марта 2012

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

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

0 голосов
/ 10 марта 2012

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

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

0 голосов
/ 10 марта 2012

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

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

...