C# Lambda表达式比较运算符“&燃气轮机&引用&引用&燃气轮机=&引用;问题
当我在实体框架中执行这些操作符(C# Lambda表达式比较运算符“&燃气轮机&引用&引用&燃气轮机=&引用;问题,c#,lambda,C#,Lambda,当我在实体框架中执行这些操作符(和=)时,lambda表达式。两者都得到了相同的结果 db.companys.where(Company=>(比较(转换(Company.Name),“y”)>0)) db.companys.where(Company=>(比较(转换(Company.Name),“y”)>=0)) Lambda表达式比较运算符是否存在此问题? 我改成 db.companys.where(Company=>(比较(Convert(Company.Name),“y”)>1))-无结果
和=
)时,lambda表达式。两者都得到了相同的结果
db.companys.where(Company=>(比较(转换(Company.Name),“y”)>0))
db.companys.where(Company=>(比较(转换(Company.Name),“y”)>=0))
db.companys.where(Company=>(比较(Convert(Company.Name),“y”)>1))
-无结果。其不正确db.companys.where(Company=>(比较(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)));
如果您得到的结果相同,则意味着没有
公司。名称
等于“Y”为什么您希望答案不同
做什么李>比较
做什么李>Convert
的计算结果是什么比较(转换(Company.Name),“y”)
如果计算结果为
1
或更大,则两个答案都是正确的。如果两个查询的结果数相同,则表示(比较(转换(公司名称),“y”)
永远不等于零。如果它大于零,则两个查询都将返回它;如果它小于零,则两个查询都不会返回它。感谢所有响应,Lambda expression查询仅是正确的
db.Companies.where(Company => (Compare(Convert(Company.Name), "Test") > 0))
db.Companies.where(Company => (Compare(Convert(Company.Name), "Test") >= 0))
我将“right arg”值更改为“Test”。我有一条带有Test的记录“Name”。执行了以下查询
db.Companies.where(Company => (Compare(Convert(Company.Name), "Test") > 0))
并显示结果105(此处未显示带有“Test”的名称。-正确
然后我执行了这个
db.Companies.where(Company => (Compare(Convert(Company.Name), "Test") >= 0))
并显示结果106(此处显示带有“Test”的名称)-正确什么是
转换
和比较
?好吧,如果没有看到它们,我们无法判断它们应该评估为什么。-1个不完整的问题!转换和比较做什么
。转换我使用FieldType.db.companys.where(Company=>(Compare(Convert(Company.Name),“y”)>0)给出了64个结果。db.companys.where(Company=>(Compare(Convert(Company.Name),“y”)>=0)也给出了64个结果您应该向我们展示Comapare/Convert的作用。但是如果Compare与String.Compare的作用相同,那么如果结果>0,则表示公司名称与“y”不同.那么,你的名字在哪里返回到“Y”如果第一个操作数大于第二个操作数,string.compare将返回大于零的值。如果两个操作数不相等,则返回非零值。当然,如果使用>0,则返回大于0的值。如果使用>=0,则返回大于零的值。因此,如果得到相同的结果,则意味着没有0,因此没有公司。名称等于“Y”(您的比较)@elviejo Yes。您的答案文本是正确的(假设Compare
和Convert
按照您认为的方式操作),但您的注释不是。如果结果为>0,则表示公司名称与“Y”不同“。那么,您的where将返回所有与“Y”不同的名称。。所有与“Y”不同的公司名称将是(比较(转换(company.Name),“Y”)!=0)
。两者都是“正确的”,而不是“正确的”,因为我们不知道要求,我们不知道“正确的”是什么"应该是。而且它们都可能导致任何小于0的结果,并且是相同的。只有当compare有时返回0时,它们才会不同。我这么说是因为查看代码,并对Unshawn方法的功能进行一些假设,我的猜测都是不正确的。他可能应该使用!=
而不是使用任何一个大于0的方法a或大于或等于。我尝试了此db.companys.where(Company=>(Compare(Convert(Company.Name),“y”)>1)-没有结果db.companys.where(Company=>(Company(Convert(Company.Name),“y”)>=1))-64个结果——我的查询表达式greaterthanEqual的代码:case operatorType.greaterthanEqual:return Expression.GreaterThanOrEqual(Expression.Call(typeof(string),“Compare”,null,new[]{argLeft,argRight}),Expression.Constant(1,typeof(int));