Это встроено в другой цикл, и это довольно медленно. Есть лучший способ сделать это?Если столбец ListView «x» содержит «значение»
for(int i=0;i< listView.Items.Count;i++)
{
if(listView.Items[i].SubItems[3].Text == "asdf")
{
}
}
Это встроено в другой цикл, и это довольно медленно. Есть лучший способ сделать это?Если столбец ListView «x» содержит «значение»
for(int i=0;i< listView.Items.Count;i++)
{
if(listView.Items[i].SubItems[3].Text == "asdf")
{
}
}
Ну есть лучше способ сделать это:
foreach (ListViewItem item in listView.Items)
{
if (item.SubItems[3].Text == "asdf")
{
...
}
}
Или вы можете использовать LINQ:
var query = listView.Items
.Cast<ListViewItem>()
.Where(item => item.SubItems[3].Text == "asdf");
foreach (var item in query)
{
...
}
Я сомневаюсь, что это будет быстрее, хотя ...
Изменил ли ваш внешний контур listView
? Если нет, можете ли вы выполнить запрос один раз и повторно использовать результаты во внешнем цикле?
Ницца, позвольте мне реализовать это (если нет лучшего предложения). – sooprise
Су, как сказал Скит, это НИКОЙ путь, не самый быстрый. Вы должны предоставить более подробную информацию, чтобы получить лучший ответ –
Предполагается ли это работать в WPF? У меня нет 'SubItems' в intellisense на' item'. – vapcguy
В случае, если кто-то сталкивается с этим с использованием WPF, вы не получаете .SubItems
на item
, когда используете foreach (ListViewItem item in listView.Items)
. Вместо этого, я обнаружил, что я мог бы просто использовать DataRowView
и получить значение ячейки таким образом:
foreach (DataRowView drv in listView.Items)
{
if (drv.Row[3].ToString() == "asdf")
{
...
}
}
Вы должны добавить using System.Data;
заявление в верхней части вашего класса, чтобы использовать его. Я нашел, что это сработало в WPF, и это может быть и в других областях (например, WinForms).
Мы не можем быть уверены, нам нужно увидеть контур контейнера, чтобы увидеть, можно ли его улучшить. –
Чак, строка «asdf» только что переключается с различными значениями в контуре контейнера. – sooprise
Сколько элементов занимает эта петля и сколько элементов проходит внешний цикл? –