为什么我从C#到VB的转换不起作用?

Nib*_*Pig 3 c# vb.net

原始代码:

public List<Contact> GetContactListEntityCompiledLINQ()
{
    if (entities == null) entities = new CompanyEntities();

    ObjectQuery<Contact> contacts = compiledQuery.Invoke(entities);
    if (NoTracking) contacts.MergeOption = MergeOption.NoTracking;

    return contacts.ToList<Contact>();
}
Run Code Online (Sandbox Code Playgroud)

我转换的代码:

  Public Function GetContactListEntityCompiledLINQ() As List(Of Contact)

        If entities Is Nothing Then entities = New CompanyEntities()

        Dim contacts As ObjectQuery(Of Contact) = compiledQuery.Invoke(entities)
        If NoTracking Then contacts.MergeOption = MergeOption.NoTracking

        Return contacts.ToList(Of Contact)()

    End Function
Run Code Online (Sandbox Code Playgroud)

我在Visual Studio中使用VB版本出错:

错误1扩展方法'Public Function ToList()As System.Linq.Enumerable'中定义的System.Collections.Generic.List(Of TSource)'不是通用的(或没有自由类型参数),因此不能有类型参数.

错误发生在Return语句中,Contact用蓝色波浪形加下划线.

有任何想法吗?

And*_*are 6

把它改成这个:

Public Function GetContactListEntityCompiledLINQ() As List(Of Contact)

    If entities Is Nothing Then entities = New CompanyEntities()

    Dim contacts As ObjectQuery(Of Contact) = compiledQuery.Invoke(entities)
    If NoTracking Then contacts.MergeOption = MergeOption.NoTracking

    Return contacts.ToList()

End Function
Run Code Online (Sandbox Code Playgroud)