【发布时间】:2016-01-28 19:08:40
【问题描述】:
我有一个从数据库中获取数据的方法,我想返回一个对象。
但是下面的代码会返回 null。
我已经验证传入的 dt 包含 1 条记录。
如果我将返回类型从对象更改为对象列表,则此方法有效。
我很想明白为什么在这种情况下以及为什么我不能只返回一个对象。
public PersonObj GetPersonInformation(string personName)
{
DataTable dt = _oracle.GetPersonInformation(personName);
var aPerson = dt.AsEnumerable().Select(x =>
new PersonObj
{
FirstName = x.Field<string>("FIRST_NAME"),
LastName = x.Field<string>("LAST_NAME"),
PhoneNumber = x.Field<string>("PHONE_NUMBER")
}).ToList().Take(1);
return aPerson as PersonObj;
}
【问题讨论】:
-
来自链接的副本:“最后,First() 和 Take() 的区别在于 First() 返回元素本身,而 Take() 返回仅包含一个元素的元素序列。 (如果您将 1 作为参数传递)。”
-
旁注:预计问题的作者会进行一些基本调查(即阅读有关 C# 问题中使用的每种方法的 MSDN 文章),不这样做(或不展示结果)不会很好地反映作者,也可能引发对帖子本身的大量反对(即使帖子没有做错 - 他们无法自行修复)