ListView列的最高值

时间:2012-05-17 18:12:20

标签: c#

我不需要对listView进行排序我只需要从列中获取最高值,该列中的所有值都是数字。如果我能以某种方式将其转换为IEnumerable<int>然后我可以使用LINQ,那将会很好

更新

我现有的代码:DrawArray是带有随机数的数组。我需要获得index.ToString()列的最大值而不创建另一个列表或数组。

for (int i = 0; i < Rounds; i++)
{
ListViewItem lvItem = new ListViewItem(i.ToString());

lvItem.SubItems.Add(new ListViewItem.ListViewSubItem(lvItem, index.ToString()));

int[] DrawArray = Draw(DrawsPerRound, RoundSize);

lvItem.SubItems.Add(new ListViewItem.ListViewSubItem(lvItem, DrawArray.Aggregate("", (s, t) => s + ", " + t.ToString()).TrimStart(new char[] { ',' })));

lvItem.SubItems.Add(new ListViewItem.ListViewSubItem(lvItem, "No"));

lvItem.BackColor = Color.PaleVioletRed;

listView1.Items.Add(lvItem);
}

2 个答案:

答案 0 :(得分:1)

ListView.Items ListViewItemCollection继承IList, ICollection, IEnumerable

通过linq,你可以得到你想要的东西。

System.Nullable<int> max = (
              from m in listView1.Items.Cast<ListViewItem>() 
              select int.ParseInt(m.SubItems[0].Text)).Max();

答案 1 :(得分:1)

可能会错过一些演员或其他东西,而且有点难看,但这是一个想法:

var max = listView1.Items.Cast<ListViewItem>().Max(x => int.Parse(x.SubItems[0].Text));

这使用LINQ,因此请确保您的文件中包含using System.Linq;并使用.NET&gt; = 3.5。