Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ语句中的VB.NET数据行扩展方法_C#_Asp.net_.net_Vb.net_Linq - Fatal编程技术网

C# LINQ语句中的VB.NET数据行扩展方法

C# LINQ语句中的VB.NET数据行扩展方法,c#,asp.net,.net,vb.net,linq,C#,Asp.net,.net,Vb.net,Linq,目前,我们在C#应用程序中使用了许多扩展方法,用于使用LINQ将通用数据集转换为强类型对象。主要目的是,如果存在某些强制类型问题或其他异常,扩展方法可以记录错误 我们正试图将此代码转换为VB.NET应用程序,但向DataRow对象公开扩展方法的模块不起作用。它不能编译。代码段2中的以下行有一个编译错误,它没有看到GetFieldAsString .MajorPurchaseXID = row.GetFieldAsString("") _ 下面是c#中的代码,第一个片段是位于我们的linq类中的

目前,我们在C#应用程序中使用了许多扩展方法,用于使用LINQ将通用数据集转换为强类型对象。主要目的是,如果存在某些强制类型问题或其他异常,扩展方法可以记录错误

我们正试图将此代码转换为VB.NET应用程序,但向DataRow对象公开扩展方法的模块不起作用。它不能编译。代码段2中的以下行有一个编译错误,它没有看到GetFieldAsString

.MajorPurchaseXID = row.GetFieldAsString("") _
下面是c#中的代码,第一个片段是位于我们的linq类中的扩展方法。第二个片段是这个扩展方法在我们的数据访问层方法中的用法

public static class Linq
{
    public static string GetFieldAsString(this DataRow row, string field)
    {
        return row.Field<string>(field);
    }
}

发现我的问题,该模块应更改为公共模块,然后一切正常。哎呀,好痛啊

请告诉我们问题出在哪里。仅仅说它不起作用一点帮助都没有。您的catch块似乎丢弃了关于可能抛出的任何异常的所有信息。您是否有任何异常?我们无法使GetFieldAsString方法作为DataRow的扩展工作。以下行中的GetFieldAsString函数调用:.MajorPurchaseXID=row。GetFieldAsString(“”)未编译,因为它没有看到它。向DataRow对象公开扩展方法的模块类似乎不起作用。它不会在intellisense中显示,也不会编译。您的代码似乎是合法的。您可能缺少工具箱或编译器服务的导入子句。编译器错误是什么?sdf-不,我们有工具箱的导入子句,而在创建模块的调用方法类上不需要导入到编译器服务。
List<OfferGroupInfo> offerGroupList = new List<OfferGroupInfo>();
offerGroupList = (from row in ds.Tables[0].AsEnumerable()
                               select new OfferGroupInfo
                               {
                                   XID = row.GetFieldAsInt("OfferGroupXID"),
                                   OfferGroupTypeXID = row.GetFieldAsInt("OfferGroupTypeXID"),
                                   OfferGroupType = row.GetFieldAsString("OfferGroupType"),
                                   Name = row.GetFieldAsString("OfferGroup"),
                                   Description = row.GetFieldAsString("OfferGroupDesc")
                               }).ToList();
Namespace ToolBox
    Module LinqExtensionMethods

      <Extension()>
      Public Function GetFieldAsString(row As DataRow, field as String) As String
        Try
            Return row.Field(Of String)(field)
        Catch ex As Exception
            LogHandler.WriteError("some error message here")
            Throw New HandledException
        End Try
      End Function

    End Module
End Namespace
Dim mppTicketTermList As New List(Of MPPTicketTerms)
mppTicketTermList = (From row In ds.Tables(0).AsEnumerable() _
                                 Select New MPPTicketTerms With _
                                 { _
                                     .MajorPurchaseXID = row.GetFieldAsString("") _
                                 }).ToList()