Linq to SQL中未实现string1 >= string2操作,有什么解决办法吗?

10

如何在Linq to SQL中实现string1 >= string2?

4个回答

31

如果你正在寻找=>,通常应该写成>=,那么你无法直接使用字符串实现这一点。 你可以通过CompareTo方法获得相同的行为:

string1.CompareTo(string2) >= 0
在这种情况下,结果小于或等于零意味着string1将被排序在string2之前,因此string1更大。
顺便提一下,在C#中,=>运算符仅用于lambda表达式的定义。

8

在C# Linq To Sql中,不支持string1 >= string2的操作符。String类根本没有重载>=操作符,它只重载了!=和==操作符。您可以尝试编译以下方法以验证此信息。

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

如果你想在LinqToSql中比较两个字符串,你可以使用静态的String.Compare(string,string)方法。


1
“=>” 不同于 “>=”,我不确定他是否在谈论委托中的方法指针还是实际的大于等于运算符。 - Nick Berardi
@Nick,我的示例中有一个打字错误。SO TextEditor编译器太糟糕了 ;) - JaredPar
2
为什么将“>=”改成了“=>”? - Davy8

-1

您不能使用大于或等于运算符来比较字符串,因为无法确定您要比较的内容。如果它们实际上是数字,则可以考虑执行其他操作。

var query = from c in dc.Customers
            where c.CustomerID >= Int32.Parse("32")
            select c;

-2

我不太确定你在这里想要做什么,但字符串可以直接转换为 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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接