我有以下的情況下,想在話題一定的幫助指導:訪問和保存XElements對象集合中
我有用戶憑據組成(不得用於商業用途的XML文件,所以安全是真的在這種情況下沒有任何意義)用於簡單的聊天應用程序。如果用戶訂閱服務,他的憑證應該與XML文件中記錄的憑證相匹配。 XML文件的
代碼片段:
<Users>
<User>
<Username>Johan</Username>
<Password>Johan123</Password>
</User>
<User>
<Username>Carel</Username>
<Password>Carel123</Password>
</User>
...
...
</Users>
然後我有下面的類:
public class Credentials
{
public string Username { get; set; }
public string Password { get; set; }
}
全權證書類僅僅是將被用來檢索記錄在XML文件中的用戶列表,以及檢索特定用戶。
我有下面的代碼,可以檢索出的元素的XML文件:
public List<Credentials> RetrieveUsers()
{
Root = XElement.Load(path + "Users.xml");
List<Credentials> credentials = new List<Credentials>();
var xmlResults = from element in Root.Elements().Elements()
select new
{
Username = element.Element("Username").Value,
Password = element.Element("Password").Value
};
foreach(var xmlResult in xmlResults)
{
Credentials temp = new Credentials();
temp.Username = xmlResult.Username;
temp.Password = xmlResult.Password;
credentials.Add(temp);
}
return credentials;
}
然而,這種感覺是多餘的。我想實現在下面的線東西(這不工作):
public List<Credentials> RetrieveUsers()
{
Root = XElement.Load(path + "Users.xml");
List<Credentials> credentials = new List<Credentials>();
List<Credentials> xmlResults = from element in Root.Elements().Elements()
select new
{
Username = element.Element("Username").Value,
Password = element.Element("Password").Value
};
return xmlResults;
}
它給了我下面的錯誤:
「無法隱式轉換類型‘System.Collections.Generic.IEnumerable’到'System.Collections.Generic.List'。一個明確的轉換存在(你是否缺少一個演員?)「
這是非常有意義的,因爲我想它使用IEnumerable來枚舉通過選擇LINQ語句。
任何有關此事的幫助將不勝感激,請告訴我,如果我從錯誤的角度看待這個問題,是否可以使用其他方法。在此先感謝
@Jonesy:衛生署,錯過了 - 固定的,謝謝。 –
肯定的事情,想澄清,我沒有丟失東西 – Jonesopolis
這正是我正在尋找。非常感謝:)我知道這是我忽略的小事。我對使用lambda表達式還是有點緊張,因爲我對它的工作原理並不完全熟悉,但是我會研究它,因爲它真的可以直觀地改進代碼。再次,非常感謝。 –