2016-08-03 50 views
1

我想使用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()'方法。這是沒有意義的,不能編譯 –

回答

2

的信息是圍繞 「非可調用成員」 部分稍微有點隱蔽。 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

相關問題