Оператор AND не может работать с bool и string - PullRequest
2 голосов
/ 17 мая 2011

У меня есть оператор 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 ]

4 голосов
/ 17 мая 2011

Попробуйте заменить = знаки на ==

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 голос
/ 17 мая 2011
  1. = используется для назначения, а == используется для равенства.
  2. Я не уверен, какой результат вы ожидаете, но select r.ID && r.Status == "I" (даже с двумя знаками равенства)в любом случае недопустимо.

В зависимости от того, что вы хотите выбрать, если результатом будет количество строк, подходящих для вашего поиска, рассмотрите использование Count().Если вы хотите выбрать эти два значения, используйте класс POCO или анонимный тип :

var query1 = from r in dt.Test
             where r.ID == 92 && r.Status == "I"
             select new { ID = r.ID, Status = r.Status };
1 голос
/ 17 мая 2011

Вы имеете в виду == вместо =;выражение присваивания (в отличие от оператора равенства) сбивает с толку вещи;вместо того, чтобы возвращать bool, результатом r.Status = "I" является строка ... "I"

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

(не совсем уверен, что делать с последней частью вашей select, поэтому я пропустилона)

1 голос
/ 17 мая 2011

У вас есть один знак равенства r.Status = '"I", должен быть r.Status == '"I"

0 голосов
/ 17 мая 2011
var query1 = from r in dt.Test
             where r.ID == 92 && r.Status == "I"
             select r.ID && r.Status == "I";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...