我有以下情况,并希望获得有关该主题的一些帮助指导:
我有一个由用户凭据组成的 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; }
    }
Credentials 类仅用于检索记录在 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 来枚举由 select LINQ 语句创建的集合。
对此事的任何帮助将不胜感激,如果我从错误的角度看待这个问题,请告诉我,如果我可以使用另一种方法。提前致谢