BinaryReader b = new BinaryReader(file.InputStream);
byte[] binData = b.ReadBytes(file.InputStream.Length);
строка 2 должна быть заменена
byte[] binData = b.ReadBytes(file.ContentLength);
I suggest using IEnumerable as the return type of the method and using "yield return" to return each subitems.
private IEnumerable<ListViewSubItem> GetItemsFromListViewControl()
{
foreach (ListViewItem itemRow in this.loggerlistView.Items)
{
for (int i = 0; i < itemRow.SubItems.Count; i++)
{
yield return itemRow.SubItems[i]);
}
}
}
although if you are using .NET 3.5 I suggest using LINQ too.
foreach (ListViewItem itemRow in this.ListView.Items)
{
for (int i = 0; i < itemRow.SubItems.Count; i++)
{
// Do something useful here !
// e.g 'itemRow.SubItems[count]' <-- Should give you direct access to
// the item located at co-ordinates(0,0). Once you got it, do something
// with it.
}
}
Это мой способ сделать это.
Если вы есть .NET 3.5, другой и более простой способ ИМО сделать то, что вы показываете выше:
var qry = from i in listView1.Items.Cast<ListViewItem>()
from si in i.SubItems.Cast<System.Windows.Forms.ListViewItem.ListViewSubItem>()
select si.Text;
У меня нет времени проверять это с помощью кода, но, возможно, вы могли бы инициализировать список массивов коллекцией, возвращаемой одним из методов listview? Я проверю это, когда вернусь домой, и прокомментирую, если на вопрос не ответят до этого.
РЕДАКТИРОВАТЬ: Я провел очень быструю проверку, и он скомпилировал, запустил и инициализировал arraylist с одним элементом, который я вставил listview.
ArrayList lviItemsArrayList = new ArrayList(loggerlistView.Items.ToList());
Попробуйте и дайте нам знать, работает ли это ... Я согласен с другим комментарием. Я полагаю, что единственная причина для преобразования его в список массивов заключалась в том, что вы собирались сохранить его где-нибудь, кроме веб-формы. Определенно не для обработки представления списка.
РЕДАКТИРОВАТЬ № 2:
loggerlistView.Items имеет тип «System.Collections.Generic.IList» и имеет метод под названием «ToList», как описано здесь ].
Попробуйте добавить ссылку на Linq? До сих пор я не осознавал, что это было специфично для .NET 3.5 - извините за путаницу.
using System.Linq;