gpt4 book ai didi

c# - 动态设置 LINQ 数据源导致运算符 '==' 与操作数类型 'String' 和 'Int32' 不兼容

转载 作者:行者123 更新时间:2023-11-30 16:35:15 25 4
gpt4 key购买 nike

我正在尝试为 linq 数据源动态设置我的 where 语句,并且它工作正常,直到我尝试添加另一个约束。

此代码在这里有效:

private void SetDataSourceWhereStatement()
{
HttpCookie cookie = Request.Cookies[ "CustomerID" ];

if ( cookie == null ) //set data source where statement to default
ldsCustomerLinks.Where = "CustomerID == -1";
else ldsCustomerLinks.Where = "CustomerID == " + cookie.Value; //set data source where statement

ldsCustomerLinks.Where = ldsCustomerLinks.Where + " && CategoryID == " + m_CategoryID;
ldsCustomerLinks.DataBind();
}

但是,当我也尝试添加客户编号时,出现错误。这是我尝试使用的代码:

private void SetDataSourceWhereStatement()
{
HttpCookie cookie = Request.Cookies[ "CustomerID" ];
HttpCookie cookie2 = Request.Cookies[ "CustomerNumber" ];

if ( cookie == null ) //set data source where statement to default
ldsCustomerLinks.Where = "CustomerID == -1";
else ldsCustomerLinks.Where = "CustomerID == " + cookie.Value; //set data source where statement

if ( cookie2 != null )
ldsCustomerLinks.Where += " && CustomerNumber == " + cookie2.Value;
// else ldsCustomerLinks.Where += " && CustomerNumber >= 0";

ldsCustomerLinks.Where = ldsCustomerLinks.Where + " && CategoryID == " + m_CategoryID;
ldsCustomerLinks.DataBind();
}

cookie 和 cookie2 值都是字符串。我试过使用 int.parse、int32.parse 转换它,使用值的 .toString() 方法并尝试一切。我不明白怎么了。


编辑::

所以我从以下帖子中得到了答案,但我不明白,有人可以解释为什么我的原始代码不起作用但修改后的代码可以吗?

旧代码:

if ( cookie2 != null )
ldsCustomerLinks.Where += " && CustomerNumber == " + cookie2.Value;

新代码:

if ( cookie2 != null )
ldsCustomerLinks.Where += @" && CustomerNumber == (""" + cookie2.Value + @""") ";

最佳答案

请原谅,如果我对 LINQ 用法了解不多,我的回答可能完全不对。

This question似乎是相关的,并建议您解析/转换(在这种情况下引用!)值。

关于c# - 动态设置 LINQ 数据源导致运算符 '==' 与操作数类型 'String' 和 'Int32' 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2001547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com