我有一个查询,例如:
var table = db.GetTableBySQL($"EXEC usp_User_OldPassword_Check @UserName = '{txtUserName.Text}'");
它将两个值返回到数据表中。因此,我想将该值分配给两个变量,以便这样做:
bool isOldPassword = false;
var currentEmpGuid = string.Empty;
然后:
var test = (from DataRow dr in table.Rows
select new
{
isOldPassword = (bool)dr["IsOldPassword"],
CurrentEmpGuid = (Guid)dr["EmpGuid"]
});
table.Rows
中的数据正确无误,但未将值分配给我的变量。有人看到任何错误吗?问候
答案 0 :(得分:1)
此:
var test = (from DataRow dr in table.Rows
select new
{
isOldPassword = (bool)dr["IsOldPassword"],
CurrentEmpGuid = (Guid)dr["EmpGuid"]
});
创建一组匿名对象,每个匿名对象用于数据表的每一行,每个匿名对象包含2个属性:isOldPassword
和CurrentEmpGuid
。因此,例如,如果您使用test.First.CurrentEmpGuid
或test.First.IsOldPassword
,则将访问数据表中的值。
但是您不需要LINQ即可完成;您可以简单地做到:
isOldPassword = (bool)table.Rows[0]["IsOldPassword"],
CurrentEmpGuid = (Guid)table.Rows[0]["EmpGuid"]
为变量分配数据表第一行的值。
这当然是假设您的查询总是返回一行...