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 创建登录模块。我有两张桌子UserMastertblSalt。从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的主要内容,如果未能解决你的问题,请参考以下文章

c# ef框架怎么使用linq语句多表查询?

使用 LINQ 和实体框架在一个 SQL 查询中从多个表中提取数据

插入束数据 - 实体框架 C#

使用 linq 查询和实体框架进行检索

C# LLSQL快速查询框架

使用 LINQ 和实体框架检查 c# var 中的空值