将C#私有字符串转换为VB.Net函数
我在C#中使用LINQ创建了这个私有字符串,它返回在XML文件中找到的值。我需要将其转换为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#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查询,我建议您查看一下它的格式: