vb.net linq 能够对listviewitem进行操作么

clear_zero 2011-06-21 12:51:09
我是linq小白,想请教个问题

我现在需要根据某几个显示选项来设置listview的显示内容。比如说可以显示Category=1的所有项目,可以显示Category=1 or Category=2...的所有项目。

我的想法是把所有项目(如果我的项目clsA)放到一个大的collection里面,然后通过linq作其相应属性Category查找,把结果显示在listview里面。我看到listview里面.items.addrange可以对应一个listitem数组;同时listviewitemcollection本身就是个类。

我会用最简单的for each loop,请问如果用linq怎么写比较好

谢谢
...全文
185 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2011-06-21
  • 打赏
  • 举报
回复
data.ForEach(listView1.Items.Add(x));
=>
data.ForEach(x => listView1.Items.Add(x));
threenewbee 2011-06-21
  • 打赏
  • 举报
回复
var data = listView1.Items.Cast<ListViewItem>().Where(x => x.SubItems[1].Text == "1").ToList();
listView1.Items.Clear();
data.ForEach(listView1.Items.Add(x));
q107770540 2011-06-21
  • 打赏
  • 举报
回复
clear_zero 2011-06-21
  • 打赏
  • 举报
回复
我解决了

Dim arrLvItem As Generic.IEnumerable(Of ListViewItem) = From lvItem As ListViewItem In m_lvwItems Where lstCondition.Contains(lvItem.SubItems(1).Text) Order By lvItem.Text


我发现Generic.IEnumerable和IEnumerable是不一样的,我原来卡在那里了

我比较笨,让两位费心了

谢谢
q107770540 2011-06-21
  • 打赏
  • 举报
回复
当要显示多个Category时 可以先将Category ID放在一个数组内:
var list=new string[]{"1","2","3"};

var data = listView1.Items.Cast<ListViewItem>().Where(x =>list.Contains(x.SubItems[1].Text)).ToList();
listView1.Items.Clear();
data.ForEach(x=>listView1.Items.Add(x));
clear_zero 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 caozhy 的回复:]

引用 15 楼 clear_zero 的回复:
for each是可以用,但是如果我想加个progressbar的话,没有count可以用阿

你可以用 Aggregate() 方法来累计当前的进度。
[/Quote]

这个怎么用阿,我现在的list里面是listviewitem,不知道怎么找到count

能不能给个例子呢?

谢谢
threenewbee 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 clear_zero 的回复:]
for each是可以用,但是如果我想加个progressbar的话,没有count可以用阿
[/Quote]
你可以用 Aggregate() 方法来累计当前的进度。
clear_zero 2011-06-21
  • 打赏
  • 举报
回复
for each是可以用,但是如果我想加个progressbar的话,没有count可以用阿
clear_zero 2011-06-21
  • 打赏
  • 举报
回复

Dim arrLvItem = From lvItem As ListViewItem In m_lvwItems Where lstCondition.Contains(lvItem.SubItems(1).Text) Order By lvItem.Text
lvFixCondition.Items.Clear()
For Each lv As ListViewItem In arrLvItem
lvFixCondition.Items.Add(lv)
Next

其中lvFixCondition是listview
clear_zero 2011-06-21
  • 打赏
  • 举报
回复
我用了这个

Dim arrLvItem = From lvItem As ListViewItem In m_lvwItems Where lstCondition.Contains(lvItem.SubItems(1).Text) Order By lvItem.Text
lvFixCondition.Items.Clear()
For Each lv As ListViewItem In arrLvItem
lvFixCondition.Items.Add(lv)
Next
成功显示了,请大牛鉴定下是不是规范?

再次感谢
threenewbee 2011-06-21
  • 打赏
  • 举报
回复
data.ForEach(x=>listView1.Items.Add(x))

明显不对

data.ForEach(Function(x) listView1.Items.Add(x))
q107770540 2011-06-21
  • 打赏
  • 举报
回复
工具转的 不知道对不对
q107770540 2011-06-21
  • 打赏
  • 举报
回复
Imports System

Public Class MyClass
Shared Sub Main(ByVal args() As String)
Dim list As var = New String()
{
"1","2","3"
}


Dim data As var = listView1.Items.Cast<ListViewItem>().Where(x = >list.Contains(x.SubItems(1).Text)).ToList()
listView1.Items.Clear()
data.ForEach(x=>listView1.Items.Add(x))
End Sub
End Class

'----------------------------------------------------------------
' Converted from C# to VB .NET using CSharpToVBConverter(1.2).
' Developed by: Kamal Patel (http://www.KamalPatel.net)
'----------------------------------------------------------------
clear_zero 2011-06-21
  • 打赏
  • 举报
回复
我写到这里了

Dim arrLvItem = From lvItem As ListViewItem In m_lvwItems Where lstCondition.Contains(lvItem.SubItems(1).Text) Order By lvItem.Text
lvFixCondition.Items.Clear()


其中lvFixCondition是我的listview,
现在有两个问题
1.怎么把arrLvItem里面的东西给listview?语法卡在这里了。如果arrLvItem里面没有值会不会出问题?
2.arrLvItem是没有数据类型的,也就是object类型。这样写是不是对的?

谢谢
threenewbee 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 clear_zero 的回复:]
引用 1 楼 caozhy 的回复:

C# code
var data = listView1.Items.Cast<ListViewItem>().Where(x => x.SubItems[1].Text == "1").ToList();
listView1.Items.Clear();
data.ForEach(listView1.Items.Add(x));

我的cat……
[/Quote]
嗯,的确。向督察学习!
clear_zero 2011-06-21
  • 打赏
  • 举报
回复
我正在摸索中哈,从c#翻译过去
clear_zero 2011-06-21
  • 打赏
  • 举报
回复
有vb.net的语法例子么?

不胜感谢
q107770540 2011-06-21
  • 打赏
  • 举报
回复
3楼的不可以么
clear_zero 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 caozhy 的回复:]

C# code
var data = listView1.Items.Cast<ListViewItem>().Where(x => x.SubItems[1].Text == "1").ToList();
listView1.Items.Clear();
data.ForEach(listView1.Items.Add(x));
[/Quote]
我的category其实是2个checkbox,当两个全部选中的话,就是显示category=1 or category=2
你的这段话,如果如果先显示了category=1的,然后要是显示category=1 or category=2的就找不回来了
内容概要:本文系统研究了开关频率大于谐振频率(fs>fr)工况下,移相混合控制LLC谐振变换器在低压增益区域的工作特性,深入分析其在变频与移相结合控制模式下的调制机理、工作模态划分及损耗分布规律。通过Simulink平台构建高保真仿真模型,对变换器在不同负载和输入条件下的电压增益、转换效率、关键器件电压电流应力等性能指标进行了全面仿真验证,重点探讨了其在低增益区间的软开关实现能力与效率优化潜力,旨在提升LLC变换器在宽范围输入输出应用中的动态响应与能源转换效率。; 适合人群:从事电力电子变换器设计、高频电源开发及相关领域的高校研究生、科研院所研究人员及企业研发工程师,要求具备扎实的电路理论基础、电力电子技术知识以及一定的Simulink仿真能力。; 使用场景及目标:①深入理解LLC谐振变换器在fs>fr条件下采用移相混合控制的内在工作机理与模态转换过程;②掌握利用Simulink搭建复杂谐振变换器精确仿真模型的方法与技巧;③分析并优化低压增益区的增益特性与损耗构成,为设计高效率、高功率密度的软开关电源提供理论依据和数据支持; 阅读建议:建议读者结合文中所述仿真模型,亲自复现仿真过程,重点观察不同控制参数(如移相比、开关频率)对电压增益曲线和关键波形的影响,并对比传统变频控制策略,深入探究混合控制在拓宽调压范围、提升轻载效率方面的优势,从而深化对现代高效谐振电源设计的理解。
内容概要:本文提出了一种基于粒子群优化算法(PSO)的配电网光伏储能双层优化配置模型,以IEEE33节点系统为标准算例,实现光伏发电单元与储能系统的协同选址与定容优化。该模型采用双层架构设计,上层以投资成本、运行经济性及网络损耗最小为目标优化设备配置方案,下层通过潮流计算评估系统在不同负荷场景下的运行性能,综合考虑电压稳定性、供电可靠性及可再生能源消纳能力,最终通过Matlab编程实现完整求解流程,为高渗透率分布式电源接入背景下的配电网规划提供了有效的技术支撑。; 适合人群:具备电力系统分析基础和Matlab编程能力的研究生、高校科研人员及从事新能源并网、智能配电网规划与优化的工程技术人员。; 使用场景及目标:①研究含高比例光伏接入的配电网规划与运行协同优化问题;②掌握双层优化建模方法与粒子群算法在复杂电力系统问题中的应用技巧;③为实际工程中分布式光伏与储能系统的科学选址与容量配置提供理论依据与仿真验证平台。; 阅读建议:建议读者结合Matlab代码深入理解双层迭代求解机制,重点关注算法收敛性分析、参数敏感性测试,并可通过更换初始种群、调整权重因子或引入其他标准测试系统(如IEEE69节点)进行对比实验,进一步验证所提模型的普适性与鲁棒性。

8,492

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧