【问题标题】:AND Operator cannot work with bool and stringAND 运算符不能与 bool 和 string 一起使用
【发布时间】:2011-05-16 20:29:13
【问题描述】:

我有一个 LINQ2SQL 语句,其中我使用了两个条件:

var query1 = from r in dt.Test
                                where r.ID == 92 
                                && r.Status = '"I"
                                select r.ID && r.Status = "I"

但它给了我一个错误,即 AND (&&) 运算符不能与字符串和布尔值一起使用。这有什么好转的?

【问题讨论】:

  • 你期待什么结果?
  • 我不明白“这有什么好转?”这个问题。 “周转”是指“解释”吗?
  • '前面的"I"是错字吗?
  • =(赋值)!= ==(相等)
  • 您是否将相等和赋值与您的等号运算符混为一谈?

标签: c# linq-to-sql


【解决方案1】:

尝试用== 替换您的= 标志

var query1 = from r in dt.Test
                            where r.ID == 92 
                            && r.Status == "I"
                            select r.ID && r.Status == "I"

请记住,C# 中的= 是赋值运算符,== 是相等运算符。作为一个经常在 C# 和 VB.NET 之间来回切换的人,我经常在这里卡住!

【讨论】:

  • 我被激怒了,但 "I" = r.Status 会将此视为编译错误
  • @kim9971 - 乐于助人!不要忘记通过单击左侧的“勾号”来选择您问题的答案:)
【解决方案2】:

你有一个等号r.Status = '"I",应该是r.Status == '"I"

【讨论】:

  • 是的,这是我的错字。
【解决方案3】:

您的意思是== 代替=;赋值表达式(与相等运算符相反)令人困惑; r.Status = "I" 的结果不是返回布尔值,而是一个字符串..."I"

var query1 = from r in dt.Test
             where r.ID == 92 && r.Status == "I"
             select r.ID;

(不太清楚你的select的最后一部分是什么,所以我省略了它)

【讨论】:

    【解决方案4】:
    1. = 用于赋值,== 用于相等。
    2. 我不确定您期待什么结果,但select r.ID && r.Status == "I"(即使有 2 个等号)在任何情况下都无效。

    根据您要选择的内容,如果结果是符合搜索条件的行数,请考虑使用Count()。 如果要选择这两个值,请使用 POCO 类或 anonymous type

    var query1 = from r in dt.Test
                 where r.ID == 92 && r.Status == "I"
                 select new { ID = r.ID, Status = r.Status };
    

    【讨论】:

      【解决方案5】:
      var query1 = from r in dt.Test
                   where r.ID == 92 && r.Status == "I"
                   select r.ID && r.Status == "I";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2015-08-18
        • 2016-08-29
        • 2020-10-21
        • 1970-01-01
        • 2015-02-26
        • 2019-06-05
        相关资源
        最近更新 更多