c# - 查询变量中的 EF 双斜杠参数未给出任何结果

标签 c# entity-framework

我有一个查询,其中包含如下所示的字符串: 。 当我将其放入硬编码的查询中时,它确实返回结果,但作为变量则不会。

var myresult = RepositoryQuery.Where(a => a.Account== @"domain\\user");

有效。

string account= "domain\\user";
var user = RepositoryQuery.Where(a => a.Account == account);

不起作用。

Account GetAccount(account){
return RepositoryQuery.Where(a => a.Account == account);
}    

不起作用。

Account GetAccount(account){
return RepositoryQuery.Where(a => a.Account == @account);
}    

不起作用。

我的猜测是这与反斜杠有关,但我无法给出任何答案。

我发现有人有同样的problem但我无法从中找到解决方案。

我做错了什么?

[编辑]

更新了拼写错误的变量名称。

account.Replace("\\", "\\\\");

如果我像这样替换它,它就可以工作。 虽然看起来很丑..

[解决办法] 所以我从 session 中获得的帐户字符串已经被转义了。我决定在 session 创建时替换反斜杠,以使数据库保持一致,而不是一个带有双反斜杠,一个带有单反斜杠。

最佳答案

有时,在调试时,您必须意识到您所看到的内容可能已被 IDE 在视觉上更改,例如,在 Visual Studio 中查看文件路径时您可能会感到困惑。其中字符串“c:\something\file.bla”可以显示为“c:\\something\\file.bla” 这也发生在连接字符串和其他事物中。

在你的情况下@"domain\\user"实际上是"domain\\user"

而如果您不使用逐字字符串 查询数据库时,“domain\\user” 将是 “domain\user”

用途:

string accountid = @"domain\user"

或者

string accountid = "domain\\user"

第二点: 变量前面的@用于允许您使用保留字作为变量名。 像这样:

string @class = "1st. class";

或者

bool @if = true;
if(@if)
{
  Console.WriteLine("If is: "+ @if); //would print "If is: true"
}

关于c# - 查询变量中的 EF 双斜杠参数未给出任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16891936/

相关文章:

c# - 两个类,相同的方法,一个对象?

c# - Asp.net String.Length 计数返回为 2 个字符?

c# - 删除对象及其相关实体

c# - 没有双联表的多对多关系, Entity Framework

c# - 尝试返回 IQueryable<MyType> 时出现转换错误

c# - 如何关闭当前窗体,然后在 C# 中打开主窗体?

c# - 在 catch block 中返回空列表

c# - Autofac.Web : Impact of having *both* PropertyInjection and AttributedInjection configured

winforms - Entity Framework 4 - winform 应用程序中上下文的生命周期/范围

c# - SQL 查询在代码中超时,但在管理工作室中需要几秒钟