我正在构建一个MVC应用程序,并正在寻找翻译以下简单的SQL查询
SELECT logon_count from application_users where username = 'username_to_find'
我是LINQ和Entity Framework的新手。 我需要将logon_count结果存储为C#int,并且只需要一个结果。为安全起见,可能应加入限制1。
使用ado.net从数据库自动创建以下类,并表示application_users表。
public partial class application_users
{
public int idapplication_users { get; set; }
public string username { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public Nullable<int> logon_count { get; set; }
}
我也有dbcontext
private thedbcontext dbcontext= new thedbcontext (); //In the controller
public partial class mycontext : thedbcontext
{
public virtual DbSet<application_users> application_users { get; set; }
}
有人可以建议我如何更好地利用LINQ / Entity Framework来执行上述SQL并获得结果作为c#整数。
答案 0 :(得分:3)
假设thedbcontext
是来自EntityFramework的有效DbContext
,那么您需要做的就是以下内容
var usernameToFind = "user1";
var db = new mycontext();
var logonCount = db.application_users.Count(t => t.username == usernameToFind);
通常,您的mycontext
课程会直接来自EF的DbContext
课程
public partial class mycontext : DbContext
{
public virtual DbSet<application_users> application_users { get; set; }
}
答案 1 :(得分:1)
就像那样:
string username = "test";
using(var dbContext = mycontext())
{
var LogonCount = (from application_users in dbContext.application_users
where application_users.username == username
select application_users).Count();
}
或者您可以像Richard发布的那样使用lambda表达式。