string1> = string2 не реализовано в Linq to SQL, есть ли обходной путь? - PullRequest
8 голосов
/ 16 февраля 2009

Кто-нибудь знает, как это сделать?

Редактировать: я пытаюсь сделать> =. Я исправляю название.

Ответы [ 4 ]

24 голосов
/ 16 февраля 2009

Если вы ищете =>, который обычно записывается как >=, вы не можете сделать это напрямую со строками. Вы можете получить то же поведение через CompareTo :

string1.CompareTo(string2) >= 0

В этом случае результат, меньший или равный нулю, означает, что string1 будет отсортирован до string2 и, следовательно, больше.

К вашему сведению, оператор => в C # используется только в определении лямбда-выражений.

7 голосов
/ 16 февраля 2009

string1> = string2 не поддерживается в C # Linq To Sql. Класс String вообще не переопределяет оператор> =. Он переопределяет только операторы! = И ==. Вы можете убедиться в этом, попытавшись скомпилировать следующий метод

public static void Example() {
  int val = "foo" >= "bar";
}

Если вы хотите сравнить со строками в LinqToSql, вы должны использовать статический String.Compare (string, string) .

1 голос
/ 16 февраля 2009

Я не совсем уверен, что => чем и на каком языке вы говорите, но я могу только догадываться, что вы имеете в виду> = (больше или равно). Вы не можете использовать оператор больше или равно со строками, потому что нет точного способа сказать, о чем вы говорите. Если они на самом деле числа, которые вы можете сделать.

var query = from c in dc.Customers
            where c.CustomerID >= Int32.Parse("32")
            select c;
0 голосов
/ 16 февраля 2009

Я не совсем уверен, что вы пытаетесь сделать здесь, но строки напрямую переводятся в запросы Linq to SQL.

Не могли бы вы привести пример того, что вы пытаетесь?

Вот базовый пример использования:

string string2 = "test";

using (MyDataContext dc = new MyDataContext())
{
   // without lambdas
   var query1 = from item in dc.Items
               where item.Value == string2
               select item;

   // with lambdas
   var query2 = dc.Items.Where(item=>item.string1 == string2);
}
...