C# ListView列的最大值
我不需要对listView进行排序,我只需要从列中获取最高值,该列中的所有值都是数字。如果我可以将其转换为C# ListView列的最大值,c#,C#,我不需要对listView进行排序,我只需要从列中获取最高值,该列中的所有值都是数字。如果我可以将其转换为IEnumerable,那么我就可以使用LINQ了 更新 我的现有代码:DrawArray是带有随机数的数组。我需要在不创建其他列表或数组的情况下获取index.ToString()列的最大值 for (int i = 0; i < Rounds; i++) { ListViewItem lvItem = new ListViewItem(i.ToString()); lvItem.
IEnumerable
,那么我就可以使用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);
}
for(int i=0;is+”,“+t.ToString()).TrimStart(新字符[]{,'}));
添加(新的ListViewItem.ListViewSubItem(lvItem,“否”);
lvItem.BackColor=Color.PaleVioletRed;
listView1.Items.Add(lvItem);
}
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();
System.Nullable max=(
来自listView1.Items.Cast()中的m
选择int.ParseInt(m.SubItems[0].Text)).Max();
可能缺少一些类型转换或其他内容,这有点难看,但这里有一个想法:
var max = listView1.Items.Cast<ListViewItem>().Max(x => int.Parse(x.SubItems[0].Text));
var max=listView1.Items.Cast().max(x=>int.Parse(x.SubItems[0].Text));
这将使用LINQ,因此请确保您有
使用System.LINQ代码>在您的文件中,并且正在使用.NET>=3.5。请发布您的现有代码。您可以使用此链接中的方法:我尝试过,但无法直接访问Max,我假设必须首先对其进行强制转换。listView1.Items.Cast().Max(x=>int.Parse(x.SubItems[0].Text));谢谢@DanielVlasceanu,我将把这个Cast
放到我的答案中。在查询中丢失不存在的“var”,您将无法找到源类型“System.Windows.Forms.ListView.ListViewItemCollection”的查询模式的实现选择“未找到”。考虑显式指定范围变量“m”的类型。当编译器无法推断其实际类型时,需要显式指定(CAST)变量M的类型。因此,listview1.Items.Cast()应该可以解决这个问题。