Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将参数传递给LINQ查询_C#_Asp.net Mvc_Linq_Entity Framework 5 - Fatal编程技术网

C# 将参数传递给LINQ查询

C# 将参数传递给LINQ查询,c#,asp.net-mvc,linq,entity-framework-5,C#,Asp.net Mvc,Linq,Entity Framework 5,我有一个方法如下: public void GetUserIdByCode(string userCode) { var query = from u in db.Users where u.Code == userCode // userCode = "LRAZAK" select u.Id; var userId = query.FirstOrDefault(); // userId = 0

我有一个方法如下:

public void GetUserIdByCode(string userCode)
{
    var query = from u in db.Users
                     where u.Code == userCode // userCode = "LRAZAK"
                     select u.Id;

    var userId = query.FirstOrDefault(); // userId = 0 :(
}
当我运行代码时,我将默认值0分配给userId,这意味着找不到该Id。 但是,如果我用下面这样的字符串更改用户代码,我将得到我想要的值

public void GetUserIdByCode(string userCode)
{
    var query = from u in db.Users
                     where u.Code == "LRAZAK" // Hard-coded string into the query
                     select u.Id;

    var userId = query.FirstOrDefault(); // userId = 123 Happy days!!
}
我的问题是为什么将参数传递到LINQ查询中不起作用? 当我进入代码时,我得到了如下SQL语句:

// Does not work...
{SELECT "Extent1"."LOGONNO" AS "LOGONNO"FROM "DEBTORSLIVE"."DEBTORS_LOGONS" "Extent1"WHERE ("Extent1"."LOGONCODE" = :p__linq__0)}
硬编码LINQ查询(工作查询)给出如下SQL语句:

// Working just fine
{SELECT "Extent1"."LOGONNO" AS "LOGONNO"FROM "DEBTORSLIVE"."DEBTORS_LOGONS" "Extent1"WHERE ('LRAZAK' = "Extent1"."LOGONCODE")}
解决方案是什么?

作为一种解决方法,我使用。 下面的代码对我有用

public void GetUserIdByCode(string userCode)
{
    string clause = String.Format("Code=\"{0}\"", userCode);

    var userId = db.Users
                        .Where(clause)
                        .Select(u => u.Id)
                        .FirstOrDefault();    
}

数据库查询返回一个用户对象,其代码和Id作为属性。这是在我的一个类中定义的。

请显示调用GetUserIdByCode的代码好吗?我怀疑该值实际上不是LRAZAK-我怀疑它的开头或结尾有空格,或者类似的东西。db中的u.Code是哪种类型?您应该尝试清理输入,以确保userCode字符串中没有任何奇怪的内容。您是否检查了长度是否为6?考虑非打印字符…