从c#

时间:2016-05-27 22:28:01

标签: c# xml linq object

我无法找到如何从我的对象中检索值。这是代码:

    private object GetUserData(XElement xmlDoc)
    {
        return
              xmlDoc.Descendants("UserData").Select(u => new
              {
                  UserName = u.Element("UserName").Value,
                  Pass = u.Element("Pass").Value,
                  CurTemplate = u.Element("CurrentTemplate").Value
              });
    }

这将存储在:

   var userData = GetUserData(xmlDoc);

当我调试它并打开userData值时,它有一个带有我的definded属性的列表,但我根本无法实现它们。我试图将返回值转换为列表,字典,查找,字符串等,但这根本没有帮助。有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您无法返回匿名类型,并且通过返回“对象”来伪造它对此无济于事。如果您需要在定义Anonymous对象的范围之外的属性,那么Anonymous对象不是您需要的,您需要定义一个具有您需要的属性的类(UserName,Pass,CurTemplate)并选择一个新的实例键入而不是新的匿名类型。然后你就可以从你的方法中返回一个IEnumerable

public class UserData
{
     public string UserName;
     public string Pass;
     public string CurTemplate;
}

private IEnumerable<UserData> GetUserData(XElement xmlDoc)
{
    return
          xmlDoc.Descendants("UserData").Select(u => new UserData
          {
              UserName = u.Element("UserName").Value,
              Pass = u.Element("Pass").Value,
              CurTemplate = u.Element("CurrentTemplate").Value
          });
}