2012-12-07 89 views
0

我正在寻找这个C#Linq代码到VB.net的准确转换。我已经尝试了许多工具将C#转换为VB,但VB转换语句都没有返回正确的结果。正确的Linq转换从C#到Vb.net

C#

var rows = GridView1.Rows.Cast<GridViewRow>().Where(a => a != row).ToList(); 

VB.net

Dim rows = GridView1.Rows.Cast(Of GridViewRow)().Where(Function(a) a IsNot row).ToList() 

的方法是假设选择一个GridView的行,不包括通过点击选择的行。 的所有行的回报,没有行被排除在外......

C#

Button btnUp = (Button)sender; 
GridViewRow row = (GridViewRow)btnUp.NamingContainer; 
// Get all items except the one selected 
var rows = GridView1.Rows.Cast<GridViewRow>().Where(a => a != row).ToList(); 

VB.net

Dim btnUp As Button = DirectCast(sender, Button) 
Dim row As GridViewRow = DirectCast(btnUp.NamingContainer, GridViewRow) 
' Get all items except the one selected 
Dim rows = GridView1.Rows.Cast(Of GridViewRow)().Where(Function(a) a IsNot row).ToList() 

感谢任何及所有的帮助。

+0

你能在什么样的方式,结果是不正确的澄清?他们是否返回选定的行?他们是否过滤了太多的行?他们只是返回你想要过滤的行,等等。我猜测'a行'会比'行不行'更好,但vb.net的微妙之处有时超出了我的想象...... – Chris

+0

你有没有试过吗? http://www.developerfusion.com/tools/convert/csharp-to-vb – Nathan

+0

你的演员是否正确?你确定你在rows属性中有那个行的实例吗? –

回答

1

试试这个:

Dim btnUp As Button = DirectCast(sender, Button) 
Dim row As GridViewRow = DirectCast(btnUp.NamingContainer, GridViewRow) 
Dim rows = GridView1.Rows.Cast(Of GridViewRow)().Where(Function(a) a <> row).ToList() 
+0

IsNot完全有效,因为它执行参考相等性检查。 –

+0

<>不起作用。 ****错误重载解析失败,因为没有可访问的'Where'可以用这些参数调用: – htm11h