LINQ非激活成员 - 不能像方法一样使用
问题描述:
我想使用clientXML作为我的主窗体类的公共属性,以便我可以在我的窗体中的其他事件中使用它,但出现错误“linq non-无法使用的成员 - 不能像使用方法一样使用“。LINQ非激活成员 - 不能像方法一样使用
所以在顶部它被定义为:
public List<data> clientList = new List<data>();
...
var clientXml = XDocument.Load(@"ClientData.xml");
clientList(
from d in clientXml.Descendants("Client")
select new RegexData(
d.Element("Bla1").Value.ToString(),
d.Element("Bla2").Value.ToString(),
d.Element("Bla3").Value.ToString(),
d.Element("Bla4").Value.ToString(),
d.Element("Bla5").Value.ToString(),
d.Element("Bla6").Value.ToString(),
d.Element("Bla7").Value.ToString(),
d.Element("Bla8").Value.ToString(),
bool.Parse(d.Element("Bla9").Value.ToString()),
d.Element("Bla10").Value.ToString()
)
);
答
的信息是围绕 “非可调用成员” 部分稍微有点隐蔽。 C#试图告诉你,使用clientList
,表示List<data>
的字段,就好像它是方法是不允许的。
你应该写一个赋值,而不是:
clientList = (
from d in clientXml.Descendants("Client")
select new RegexData(
d.Element("Bla1").Value.ToString(),
d.Element("Bla2").Value.ToString(),
d.Element("Bla3").Value.ToString(),
d.Element("Bla4").Value.ToString(),
d.Element("Bla5").Value.ToString(),
d.Element("Bla6").Value.ToString(),
d.Element("Bla7").Value.ToString(),
d.Element("Bla8").Value.ToString(),
bool.Parse(d.Element("Bla9").Value.ToString()),
d.Element("Bla10").Value.ToString()
).ToList();
,并确保clientList
有List<RegexData>
数据类型。
+0
哇,非常感谢快速响应,我不知道为什么我没有想到这一点。有点新的C#,真的很感谢你的帮助! – RyGuy
这是无效的C#。我想你的意思是'clientList = new List (from ...)'或'clientList.AddRange(from ...)'或'clientList =(from ...)。ToList();'。当你的代码现在看起来,你正在尝试使用_member_'clientList'作为'clientList()'方法。这是没有意义的,不能编译 –