LINQ非激活成员 - 不能像方法一样使用

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() 
    ) 
); 
+1

这是无效的C#。我想你的意思是'clientList = new List (from ...)'或'clientList.AddRange(from ...)'或'clientList =(from ...)。ToList();'。当你的代码现在看起来,你正在尝试使用_member_'clientList'作为'clientList()'方法。这是没有意义的,不能编译 –

的信息是围绕 “非可调用成员” 部分稍微有点隐蔽。 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(); 

,并确保clientListList<RegexData>数据类型。

+0

哇,非常感谢快速响应,我不知道为什么我没有想到这一点。有点新的C#,真的很感谢你的帮助! – RyGuy