我在一个名为ParseByXML()的函数中定义了一个dataTable“A”。但返回的“A”不能被另一个独立的函数ParseByLinq()使用。是否有任何解决方案可以避免“在当前环境中不存在”?
namespace XmlParsers.Models
{
public static class XMLParsers
{
public static DataTable ParseByXML()
{
var A = new DataTable();
...
return A;
}
public static DataTable ParseByLinq()
{
var B = from row in A
...
return B;
}
}
}
答案 0 :(得分:2)
ParseByLinq
对A
一无所知,因为它是在另一种方法中定义的。您可以将参数添加到ParseByLinq
,如下所示:
public static DataTable ParseByLinq(DataTable A) { /* ... */ }
或者在类中创建一个静态成员:
public static class XMLParsers
{
static DataTable A;
public static DataTable ParseByXML()
{
A = new DataTable();
...
return A;
}
}
现在,您可以从A
- 方法访问ParseByLinq
。但是,您必须先调用ParseByXML
以确保A
实际设置为任何内容。
答案 1 :(得分:0)
ParseByLinq需要接受数据表作为其参数。然后,当您从ParseByXML收到数据表时,您可以将其发送到ParseByLinq。
答案 2 :(得分:0)
你不能在你的第二个功能中使用A而不知道从哪里得到它。你必须调用你的函数,它将使用你的PareByLinq函数返回A或者将A in作为参数传递,例如:
public static DataTable ParseByLinq()
{
var A = ParseByXML();
var B = from row in A
...
return B;
}
或
public static DataTable ParseByLinq(DataTable A)
{
var B = from row in A
...
return B;
}
并在调用它的代码中执行以下操作:
var A = ParseByXML();
ParseByLinq(A);
答案 3 :(得分:0)
您的类XMLParsers上不存在您的变量A.所以这样做就是改变你的方法
public static DataTable ParseByLinq()
{
var B = from row in ParseByXML()
...
return B;
}
如果需要,您可以将两种方法保持为静态。但是这篇文章中的其他方法还可以
答案 4 :(得分:0)
2种方式:
namespace XmlParsers.Models
{
public static class XMLParsers
{
private static DataTable A;
public static void ParseByXML()
{
A = new DataTable();
...
}
public static DataTable ParseByLinq()
{
var B = from row in A
...
return B;
}
}
}
或者
namespace XmlParsers.Models
{
public static class XMLParsers
{
public static void ParseByXML()
{
A = new DataTable();
...
return A;
}
public static DataTable ParseByLinq(DataTable A)
{
var B = from row in A
...
return B;
}
}
}