我有一个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发出错误!
提前谢谢。
答案 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");
}