var us = from user in conteks.Tabel_User
where user.user_id == userID
select user
如果查询给出 1 行的结果,如何从每列获取数据?
如果您确定查询将只为您提供一行结果,请使用 .Single
方法。如果您的查询导致零个或多个结果,它将抛出一个 eror。
var us = from user in conteks.Tabel_User
where user.user_id == userID
select user
var singleUser = us.Single();
//get name, ssn, etc
var name = singleUser.Name;
var ssn = singleUser.Ssn;
我将解释这里提到的每种方法。
-
Single()
.它将为您提供单行查询中的行。如果您的查询导致零行或多行,则会引发错误。 -
SingleOrDefault()
.它将为您提供单行查询中的行。如果查询导致零行,它将为你提供默认类型,null
引用类型。如果您的查询导致多行,它将引发错误。 -
First()
.如果您的查询,它会给你第一行,当然如果你把它应用于单行查询,那么它将返回该行。如果您的查询导致零行,那么它会给你一个错误。 -
FirstOrDefault()
.最安全的方法。如果您的查询返回行,它将为您提供第一行,如果您的查询返回零行,则为您提供类型的默认值(null
引用类型(。
像这样获取
var user = us.SingleOrDeafult();
if(user != null)
{
var fn = user.firstName;
}
var us= (from user in conteks.Tabel_User
where user.user_id == userID
select user).FirstOrDefault();
将为您提供用户对象,然后您可以按us.<columnName>
选择每一列,如果存在未找到 serarch 条件的记录的可能性,则可能需要在访问对象属性之前进行 null 检查。
您可以尝试如下所示。
注意:如果您考虑性能,那么FirstOrDefault()
方法是最好的。
var us = from user in conteks.Tabel_User
where user.user_id == userID
select user
var userObject = us.FirstOrDefault();
然后:
var firsName = userObject.FirstName;
var lastName = userObject.LastName;
.....