LINQ 查询在 C# 中使用实体框架获取单列和单行值而不使用 Where
Posted
技术标签:
【中文标题】LINQ 查询在 C# 中使用实体框架获取单列和单行值而不使用 Where【英文标题】:LINQ query Using Entity Framework in C# to get Single Column & Single Row Value Without using Where 【发布时间】:2020-02-27 14:53:09 【问题描述】:LINQ 查询以获取单列和单行值。
在MVC4
中使用SHA512
创建登录模块。我有两张桌子UserMaster
和tblSalt
。从UserMaster
我已经检索了所有字段,但在tblSalt
表中只有一列一行,因此不能使用Where
条件。如何访问该列?
//Retrive Stored HASH Value From Database According To Username (one unique field)
var userInfo = db.UserMasters.Where(s => s.Username == entity.Username.Trim()).FirstOrDefault();
var saltVAL = db.tblsalts.Max(s => s.saltvalue.ToString().Trim()).FirstOrDefault();
//Assign HASH Value
if (userInfo != null)
OLDHASHValue = userInfo.Hashpwd;
SALT = saltVAL. ;
预期从saltVAL
变量访问saltvalue
列并初始化为SALT
变量。
【问题讨论】:
仅供参考:盐(在密码学中)是随机数据,用作散列函数的附加输入,它是为每个密码新生成的。所以你的盐表不应该只有 1 个条目(除非只注册了 1 个密码)。更多关于密码学中的盐:en.wikipedia.org/wiki/Salt_(cryptography) @MindSwipe 我已经为所有用户保留了 saltvalue。我只需要从表中访问该列。那我该怎么办? 你可以使用db.tblsalts.FirstOrDefault()
【参考方案1】:
使用FirstOrDefault()
从表中获取第一行(如果表为空,则为 null)
var saltVAL = db.tblsalts.FirstOrDefault()
【讨论】:
以上是关于LINQ 查询在 C# 中使用实体框架获取单列和单行值而不使用 Where的主要内容,如果未能解决你的问题,请参考以下文章