【发布时间】:2013-10-31 20:00:02
【问题描述】:
我有以下情况,并希望获得有关该主题的一些帮助指导:
我有一个用于简单聊天应用程序的由用户凭据组成的 XML 文件(不用于商业用途,因此在这种情况下安全性实际上没有任何意义)。如果用户订阅了该服务,他的凭据应该与 XML 文件中记录的一致。
XML文件的代码sn-p:
<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 语句创建的集合。
我们将不胜感激,如果我从错误的角度看待这个问题,请告诉我是否可以使用其他方法。提前致谢
【问题讨论】: