Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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#私有字符串转换为VB.Net函数_C#_Asp.net_Xml_Vb.net_Linq - Fatal编程技术网

将C#私有字符串转换为VB.Net函数

将C#私有字符串转换为VB.Net函数,c#,asp.net,xml,vb.net,linq,C#,Asp.net,Xml,Vb.net,Linq,我在C#中使用LINQ创建了这个私有字符串,它返回在XML文件中找到的值。我需要将其转换为VB.Net函数。我用C#converter试过了,但不起作用 你能帮我吗 这是代码 private string ImportoXML(string PercorsoXML, string ID) { XElement xdoc = XElement.Load(PercorsoXML, LoadOptions.PreserveWhitespace); string ns = xdoc.Name.N

我在C#中使用LINQ创建了这个私有字符串,它返回在XML文件中找到的值。我需要将其转换为VB.Net函数。我用
C#converter
试过了,但不起作用

你能帮我吗

这是代码

private string ImportoXML(string PercorsoXML, string ID)
{
  XElement xdoc = XElement.Load(PercorsoXML, LoadOptions.PreserveWhitespace);
  string ns = xdoc.Name.Namespace.NamespaceName;
  var elements = xdoc.Elements(XName.Get("PmtInf", ns))
                     .Elements(XName.Get("DrctDbtTxInf", ns));
  var ElencoValori = from lv2 in elements
                           select new
                           {
                               PmtId = lv2.Element(XName.Get("DrctDbtTx", ns))
                                          .Element(XName.Get("MndtRltdInf", ns))
                                          .Element(XName.Get("MndtId", ns)).Value, InstdAmt 
                                          = lv2.Element(XName.Get("InstdAmt", ns)).Value;
                           };
  return ElencoValori.Where(c => c.PmtId.EndsWith(ID)).FirstOrDefault().InstdAmt.ToString();
}
下面是我从自动代码转换器获得的VB代码:

Private Function ImportoXML(ByVal PercorsoXML As String, ByVal ID As String) As String
    Dim xdoc As XElement = XElement.Load(PercorsoXML, LoadOptions.PreserveWhitespace)
    Dim ns As String = xdoc.Name.[Namespace].NamespaceName
    Dim elements = xdoc.Elements(XName.[Get]("PmtInf", ns)).Elements(XName.[Get]("DrctDbtTxInf", ns))
    Dim ElencoValori = From lv2 In elements
        SELECT NEW    
        {
        PmtId = lv2.Element(XName.[Get]("DrctDbtTx", ns)).Element(XName.[Get]("MndtRltdInf", ns)).Element(XName.[Get]("MndtId", ns)).Value, 
        InstdAmt = lv2.Element(XName.[Get]("InstdAmt", ns)).Value 
        }
        End Select
    Return ElencoValori.Where(Function(c) c.PmtId.EndsWith(ID)).FirstOrDefault().InstdAmt.ToString()
End Function 
错误出现在
选择新
中:

语句和标签在选择大小写和第一个大小写之间无效


如果看不到您将其转换为什么,就很难看到错误在哪里

以下是我为您手动转换的内容:

Private Function ImportXML(PercorsoXML As String, ID As String) As String

    Dim xdoc As XElement = XElement.Load(PercorsoXML, LoadOptions.PreserveWhitespace)

    Dim ns As String = xdoc.Name.Namespace.NamespaceName

    Dim elements = xdoc.Elements(XName.Get("PmtInf", ns)).Elements(XName.Get("DrctDbtTxInf"))

    Dim ElencoValori = From lv2 In elements
                       Select PmtId = lv2.Element(XName.Get("DrctDbtTx", ns)) _
                           .Element(XName.Get("MndtRltdInf", ns)) _
                           .Element(XName.Get("MndtId", ns)).Value, InstdAmt _
                           = lv2.Element(XName.Get("InstdAmt", ns)).Value

    Return ElencoValori.Where(Function(c) c.PmtId.EndsWith(ID)).FirstOrDefault().InstdAmt.ToString()

End Function

这对我来说编译得很好,所以请试一试。

再一次,我在这里只发布与VB等效的代码,因为在线转换器没有开始处理这类代码,因此考虑到这是一个合理的问题:

Option Infer On

Private Function ImportoXML(ByVal PercorsoXML As String, ByVal ID As String) As String
    Dim xdoc As XElement = XElement.Load(PercorsoXML, LoadOptions.PreserveWhitespace)
    Dim ns As String = xdoc.Name.Namespace.NamespaceName
    Dim elements = xdoc.Elements(XName.Get("PmtInf", ns)).Elements(XName.Get("DrctDbtTxInf", ns))
    Dim ElencoValori = From lv2 In elements
        Select New With {
            Key .PmtId = lv2.Element(XName.Get("DrctDbtTx", ns)).Element(XName.Get("MndtRltdInf", ns)).Element(XName.Get("MndtId", ns)).Value,
            Key .InstdAmt = lv2.Element(XName.Get("InstdAmt", ns)).Value;
        }
    Return ElencoValori.Where(Function(c) c.PmtId.EndsWith(ID)).FirstOrDefault().InstdAmt.ToString()
End Function

您能否说明生成的VB代码是什么,并解释其中哪部分不起作用以及错误消息是什么?@RoccoTateo,返回字符串的私有方法与私有字符串变量之间存在差异。。您可能需要编辑该问题并询问
如何将此C#方法转换为VB函数
谢谢,但在语句中选择PmtId=lv2.Element(XName.Get(“DrctDbtTx”,ns))\uelement(XName.Get(“MndtRltdInf”,ns))\uelement(XName.Get(“MndtId”,ns)).Value,InstdAmt uz=lv2.Element(XName.Get(“InstdAmt”,ns)).Value告诉我expectd'end select'。如果我把“end select”放在预期语句的末尾,我就有同样的错误。@RoccoTateo听起来好像你的编译器认为你在尝试执行select case语句。如果您试图在代码中使用LINQ查询,我建议您查看一下它的格式: