【问题标题】:How to set an Entity Framework query equal to a string如何将实体框架查询设置为等于字符串
【发布时间】:2014-07-28 22:25:22
【问题描述】:

我对实体框架非常陌生。我正在尝试使用它来查询数据库,并且我想设置一个等于该查询结果的字符串。

这是我正在使用的代码:

string UserId = (db.StudentModel.Where(b => b.UserName == strCert)).ToString();

现在,显然这会将 UserId 设置为等于查询。如何设置 UserId 等于 result

【问题讨论】:

  • 你的意思是,如何从 LINQ 查询中获取 SQL 查询?
  • 我在使用 linq 标签时不正确吗?我只想使用上面的查询从数据库中获取一个单元格。该单元格中的文本是我需要 UserId 存储的内容。

标签: c# sql linq entity-framework asp.net-mvc-4


【解决方案1】:

你的意思是这样的吗:

string UserId = db.StudentModel.FirstOrDefault(b => b.UserName == strCert).UserId;

或更安全:

var student = db.StudentModel.FirstOrDefault(b => b.UserName == strCert);
if(student != null) 
{
    string UserId = student.UserId;
    /* do something with UserId here */
}

【讨论】:

  • 这是一个出色的实现,但我看不到第 2 行的附加值。
  • 两个问题:1)当我使用它时,它给了我一个“无法将 int 隐式转换为字符串”的错误 - 我什至不知道 int 会是什么! 2) 你能解释一下为什么 UserId 会出现在命令的末尾吗?
  • 它开始看起来像 UserId 是 int 类型,而不是 OP 示例代码包含的莫名其妙的字符串类型:D
  • 1) 你需要添加.ToString()(编辑了我的代码,因为我之前不知道UserId 的类型是int)。 2)查询返回一个StudentModel - 我猜是确切的类型 - 你只想要那个模型的UserId属性,这就是为什么最后需要.UserId
  • 这很尴尬。你是对的。它是数据库中的一个整数。非常感谢您指出这一点!哈哈哈
【解决方案2】:

使用这个:

db.StudentModel.FirstOrDefault(b => b.UserName == strCert).UserId

但最好是获取对象并检查是否为空

var user = db.StudentModel.FirstOrDefault(b => b.UserName == strCert);

【讨论】:

  • 您需要检查查询是否返回 null 以避免异常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
  • 2014-07-17
  • 1970-01-01
相关资源
最近更新 更多