我正在开发silverlight应用程序。现在,我有一个问题是将字符串变量与双引号一起传递给sql语句。我试着用这种方式:
string itemList;
string commaString = @"""";
for (int i = 0; i < TestList.Count; i++)
{
itemList += commaString + TestList[i].Code + commaString + " || ";
}
itemList =“x.Code ==”+ itemList;
itemList = itemList.Removed(itemList.Length - 3);
但传递的变量是这样的:
“x.Code == \”11001-111001 \“|| x.Code == \”11016-111001 \“ “
我希望它是这样的:
x.Code ==“11001-111001”|| x.Code ==“11016-111001”
我不想要反斜杠。我想将此变量传递给sql select语句。是否有可能做到这一点?有谁能够帮我?谢谢......
***更新:
我的TestList目前有2个值:
"11001-111001"
"11016-111001"
然后我想将itemList中的这些值组合为:
x.Code ==“11001-111001”|| x.Code ==“11016-111001”
因为我想在sql语句中使用它。合并后,现在变为
“x.Code == \”11001-111001 \“|| x.Code == \”11016-111001 \“”
下面是我想如何使用变量。我想用 itemList :
替换代码private void GetAccountCodes()
{
var r = _svc.AccountCodes.Where(x => x.Code == "11001-111001" || x.Code == "11016-111001").Select(x => x);
_company.AccountCodes.LoadCompleted -= new EventHandler<LoadCompletedEventArgs>(AccountCodes_LoadCompleted);
_company.AccountCodes.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(AccountCodes_LoadCompleted);
_company.AccountCodes.Clear(true);
_company.AccountCodes.LoadAsync(r);
}
private void AccountCodes_LoadCompleted(object sender, LoadCompletedEventArgs e)
{
if (_company.AccountCodes!= null && _company.AccountCodes.Count() > 0)
{
//do something. but right now it returns no record
}
}
答案 0 :(得分:1)
编辑:
您可以使用Contains传递数据库linq查询的项目列表:
.Where(x=> itemList.Contains(x.Code)).ToList()
至于`\&#34; part这只是显示值的调试器。
尝试点击小放大镜图标或将值打印到控制台,您将获得:
"11001-111001" || x.Code == "11016-111001" || "
将此图片视为证据:
这些转义反斜杠仅由调试器添加。
要添加单引号,您可以使用以下方法之一:
string commaString = " \" "
或者:
string commaString = @" "" "
答案 1 :(得分:0)
user3185569是对的。它只是显示该值的调试器。然而,以这种方式连接字符串可能不是最好的想法(记住:字符串是不可变的)。我会使用StringBuilder()和string.Format(),如下所示:
StringBuilder itemList = new StringBuilder();
for (int i = 0; i < TestList.Count; i++)
{
itemList.Append(string.Format("\"{0}\" || ", TestList[i].Code));
}
这也提高了可读性。