2010-03-25 99 views
2
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 }; 

AND条款与.StartsWith不起作用。如果我使用==运算符,查询工作正常。我尝试在where子句中添加括号,但它没有帮助。任何想法缺少什么。先谢谢你。LINQ问题在哪里条款

+0

什么是错误notsupportexception? – Nix 2010-03-25 19:43:33

+0

如果没有错误,哪些formNumber项目被错误地包含或排除?我们只是没有足够的数据来帮助。 – 2010-03-25 19:47:07

+0

formNumber.RegistrationNumber!=注册号 不起作用。即 formNumber.RegistrationNumber!= 1234 该查询告诉不显示1234,但它仍显示 – Kris1511 2010-03-25 19:51:12

回答

0

尝试一些非常基本的东西,如“& & true == false”,看看是否失败。也颠倒顺序。如果您颠倒了订单,它仍然是第二个失败的条款吗?

没有什么关于StartsWith应该引起这种行为。这里还有其他事情要做。修剪和移动元素,直到你隔离真正的错误。

0

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

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

与jrummells相同,只是针对额外的评论。

formNumber.RegistrationNumber!= registrationNumber

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