在linq表达式中设置属性值

时间:2014-10-20 12:49:26

标签: .net vb.net linq

Dim hiddens As List(Of Integer)) 

我想使用此列表值作为索引设置UltraGridRows的隐藏属性:

hiddens.Select(Function(x) ultraGrid1.Rows(x).Hidden = True)

该行编译并且我根本没有得到运行时异常,但是没有隐藏相应的行。这是在表达式中设置属性的有效方法吗?

2 个答案:

答案 0 :(得分:2)

不要使用LINQ 设置属性。如果要修改某些内容,请使用循环。如果要查询某些内容,请使用LIN(Q)。所以你可以简单地使用For Each(我会使用):

For Each index As Int32 In hiddens
    ultraGrid1.Rows(index).Hidden = True
Next

或使用List.ForEach

hiddens.ForEach(Function(index) ultraGrid1.Rows(index).Hidden = True)

Erip Lippert:“表达式的目的是计算一个值,而不是引起副作用。声明的目的是引起副作用。”

请注意,在您使用For Eeach(或隐式执行ToList之类的其他方法)之前,您的查询甚至不会执行。这只是查询的定义。

答案 1 :(得分:0)

试试这个:

hiddens.ForEach(Function(x) ultraGrid1.Rows(x).Hidden = True)