LINQ Where子句的问题

时间:2010-03-25 19:39:50

标签: linq

var results =  from formNumber in context.DetailTM 
     join c in context.ClaimPeriodTM on formNumber.ClaimPeriod equals c.Cid
     where formNumber.FormNumber.StartsWith(fNumber) 
            && formNumber.RegistrationNumber != registrationNumber
     select new { RegNo = formNumber.RegistrationNumber, 
            CP = c.ClaimPeriod, FormNo = formNumber.FormNumber }; 

.StartsWith的AND CLAUSE不起作用。如果我使用==运算符,查询工作正常。我尝试在where子句中添加括号,但它没有帮助。知道缺少什么。先谢谢你。

3 个答案:

答案 0 :(得分:0)

尝试一些非常基本的内容,例如“&& true == false”,看看是否失败。也颠倒顺序。如果颠倒顺序,它仍然是第二个失败的子句吗?

StartsWith没有任何内容会导致此行为。这里还有别的东西。修剪并移动元素,直到找出真正的错误。

答案 1 :(得分:0)

FormNumber的数据库类型是什么?如果它的char(而不是varchar),则可能需要修剪比较的一侧或两侧。

where
    formNumber.FormNumber.Trim().StartsWith(fNumber.Trim()) 
    && formNumber.RegistrationNumber != registrationNumber

答案 2 :(得分:0)

与jrummells回答相同,只是附加评论的目标。

  

formNumber.RegistrationNumber!= registrationNumber

在此检查数据库类型。如果它们是固定长度(char或nchar),则可能需要进行一些修剪。