我想返回从Linq中的查询中检索到的匿名数据。我不知道哪种List<>返回,因为数据是“var”匿名。
public List<?????> QueryXmlUserLogin()
{
var data = from item in XDocumentObj.Descendants("User_Data")
select new
{
user = item.Element("user").Value,
password = item.Element("password").Value,
};
data.ToList();
return ????
答案 0 :(得分:3)
我们会想到两种数据类型:Tuple<string, string>
或KeyValuePair<string, string>
,具体取决于其预期用途:
public List<Tuple<string, string>> QueryXmlUserLogin()
{
var data = from item in XDocumentObj.Descendants("User_Data")
select Tuple.Create(item.Element("user").Value, item.Element("password").Value);
return data.ToList();
}
但是,使用这些通常可以隐藏返回类型的含义。由于该方法是公开的,您可能最好为该作业创建一个新类:
public class UserCredentials
{
public string Username {get; set; }
public string Password {get; set; }
}
public List<UserCredentials> QueryXmlUserLogin() ...
顺便说一下,(基于变量名称)不应该以明文存储密码。如果我错误地解释变量或你的例子是设计的,请道歉,但是如果有人发现这个帖子 - 应该存储密码(和唯一的盐)的哈希值而不是明文密码。
答案 1 :(得分:1)
我不会返回匿名类型,因为他们有这个问题。也许您应该创建一个新的数据结构,构造它,然后返回List<T>
。
答案 2 :(得分:1)
您可以创建一个类型,例如:
class Person {
public string User { get; set; }
public string Password { get; set; }
}
然后使用:
public List<Person> QueryXmlUserLogin()
{
var data = from item in XDocumentObj.Descendants("User_Data")
select new Person
{
User = item.Element("user").Value,
Password = item.Element("password").Value,
};
return data.ToList();
}