c#MVC XML记录值

时间:2012-02-23 22:18:50

标签: c# xml

我有一个xml文件:

<profiles>
  <profile username="user4" fullname="Full Name" />
 </profiles>

我正在尝试检索全名的值,这是我尝试的内容:

public List<string> GetFullName(string username)
{
    List<Profile> list = null;
    try
    {
        list = (from t in ProfileList
                where t.UserName == username
                select t).FirstOrDefault();
    }
    catch { }
    List<string> userFullName = new List<string>();
    if (list != null)
    {
        foreach (Profile t in list)
        {
            userFullName.Find(t.FullName);
        }
    }
    return userFullName;
}

FirstOrDefault发出错误!
提前谢谢。

2 个答案:

答案 0 :(得分:2)

FirstOrDefault()是一个extension method,这意味着它在概念上基本上类似于

var myList = new List<int>() { };
int myValue = StaticUtilsClass.FirstOrDefault(myList);

现在,如果查看FirstOrDefault documentation,请注意在传入null参数时它会引发空参数异常。

这意味着什么

List<int> myList = null;
myList.FirstOrDefault();

会抛出异常。

因此,无论何时调用x.FirstOrDefault()并遇到问题(即“错误”),首先要检查的是x(在本例中是您的查询)是否返回null。

从那里开始,我会看一下FirstOrDefault()将返回单个实体的事实,但您将其设置为等于List<Profile>。除非您的ProfileList是List<Profile>的枚举,否则这也是一个问题。

无论如何,这应该让你开始。除此之外,知道ProfileList是什么以及声明它的位置会很有帮助。

答案 1 :(得分:1)

我宁愿像这样重写你的代码

    public String GetFullName(string username)
    {
        var targetObject = (from t in ProfileList
                    where t.UserName == username
                    select t).FirstOrDefault();

        if (targetObject != null) return targetObject.FullName;
        throw new Exception("Target user is not found");
    }