VB.NET中的条件Linq查询

时间:2009-05-11 06:49:01

标签: vb.net linq

我正在试图完成与here所描述的完全相同的事情,但在VB.NET中

我尝试了所有的C#到VB转换器,但似乎没有人使用LINQ。我完全是C#的新手,所以任何帮助都会受到赞赏!

public static IQueryable<Type> HasID(this IQueryable<Type> query, long? id) { return id.HasValue ? query.Where(o => i.ID.Equals(id.Value)) : query; }

2 个答案:

答案 0 :(得分:3)

试试这个:

Public Module MyModule
    <Runtime.CompilerServices.Extension()> _
    Public Function HasID(ByVal query As IQueryable(Of Type), ByVal id As Long?) As IQueryable(Of Type)
        Return If(id.HasValue, query.Where(Function(o) o.ID.Equals(id.Value)), query)
    End Function
End Module

在VB.NET中,您应该创建一个模块来创建扩展方法。同时放置Runtime.CompilerServices.Extension属性并从函数定义中删除static和this。

P.S。恨VB:)

答案 1 :(得分:0)

您尝试过哪种转换器?你应该试试Telerik Converter。我已将您的代码复制到他们的转换器中并得到了这个:

<System.Runtime.CompilerServices.Extension> _
Public Shared Function HasID(query As IQueryable(Of Type), id As System.Nullable(Of Long)) As IQueryable(Of Type)
    Return If(id.HasValue, query.Where(Function(o As ) i.ID.Equals(id.Value)), query)
End Function



'=======================================================
'Service provided by Telerik (www.telerik.com)
'Conversion powered by NRefactory.
'Built and maintained by Todd Anglin and Telerik
'=======================================================