AND运算符不能与bool和字符串一起使用

时间:2011-05-16 20:29:14

标签: c# linq-to-sql

我有一个LINQ2SQL语句,我使用两个标准:

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

但它让我错误的是AND(&&)运算符无法使用string和bool。这是什么转变?

5 个答案:

答案 0 :(得分:4)

尝试用=

替换==个标志
var query1 = from r in dt.Test
                            where r.ID == 92 
                            && r.Status == "I"
                            select r.ID && r.Status == "I"

请记住,C#中的=是赋值运算符,==是相等运算符。作为经常在C#和VB.NET之间翻转的人,我经常会在这里不知所措!

答案 1 :(得分:1)

您有一个等号r.Status = '"I",应为r.Status == '"I"

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

  1. =用于分配,==用于平等。
  2. 我不确定你期待什么结果,但select r.ID && r.Status == "I"(即使有两个相等的标志)在任何情况下都无效。
  3. 根据您要选择的内容,如果结果是符合搜索条件的行数,请考虑使用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 };
    

答案 4 :(得分:0)

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