-4

当我在实体框架中执行这些运算符(>和) lambda 表达式时。>=两者都得到相同的结果。

  1. db.Companies.where(Company => (Compare(Convert(Company.Name), "y") > 0))
  2. db.Companies.where(Company => (Compare(Convert(Company.Name), "y") >= 0))

是 Lambda 表达式比较运算符的问题吗?我改成

  1. db.Companies.where(Company => (Compare(Convert(Company.Name), "y") > 1))- 没结果。它不正确

  2. db.Companies.where(Company => (Compare(Convert(Company.Name), "y") >= 1))- 64 个结果

源代码

case operatorType.Greater: return Expression.GreaterThan(Expression.Call(typeof(string),
                            "Compare", null, new[] { argLeft, argRight }),
                             Expression.Constant(1, typeof(int)));

case operatorType.GreaterEqual: return Expression.GreaterThanOrEqual(       Expression.Call(typeof(string), "Compare", null, new[]  { argLeft, argRight }),
                        Expression.Constant(1, typeof(int)));
4

4 回答 4

2

如果你得到相同的结果,意味着没有Company.Name等于“Y”

于 2012-09-12T14:42:27.810 回答
0

为什么你会期望答案会有所不同。

  • 做什么Compare
  • 做什么Convert
  • Compare(Convert(Company.Name), "y")评估什么?

如果它评估为1或更大,那么两个答案都是正确的。

于 2012-09-12T14:42:57.030 回答
0

如果两个查询的结果数量相同,则意味着它(Compare(Convert(Company.Name), "y")永远不会等于零。如果它大于零,则两个查询都将返回它;如果它小于零,那么两个查询都不会返回它。

于 2012-09-12T14:50:09.630 回答
0

感谢所有回复 Lambda 表达式查询仅是正确的。

db.Companies.where(Company => (Compare(Convert(Company.Name), "Test") > 0))
db.Companies.where(Company => (Compare(Convert(Company.Name), "Test") >= 0))

我将“正确的参数”值更改为“测试”。我有一个记录'名称'与测试。执行以下查询。

db.Companies.where(Company => (Compare(Convert(Company.Name), "Test") > 0)) 

并显示结果 105(此处未显示带有“测试”的名称。-正确

然后我执行了这个

db.Companies.where(Company => (Compare(Convert(Company.Name), "Test") >= 0)) 

并显示结果 106(此处显示带有“测试”的名称) -正确

于 2012-09-13T08:30:50.837 回答