簡體   English   中英

在linq中返回到xml查詢的數據類型未知

[英]Unknown Type of data to return in linq to xml query

我想返回從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 ????

根據它們的預期用途,想到了兩種數據類型,即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() ...

另外,不應基於明文存儲密碼(基於變量名)。 抱歉,如果我錯誤地解釋了變量或者您的示例是人為的,但是如果有人偶然發現了該帖子,則應存儲密碼(和唯一的鹽)的哈希值,而不是以明文形式存儲密碼。

我不會返回匿名類型,因為它們有此問題。 也許您應該創建一個新的數據結構,構造它,然后返回該List<T>

您可以創建一個類型,例如:

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM