令人困惑的LINQ语句

时间:2009-06-23 20:16:05

标签: linq linq-to-sql

我正在尝试按如下方式制作LINQ语句:

结果应该在两个日期(今天基本上)之间进行 结果应该有一个等于false的“batchstatus”列(尚未验证) 结果应该有一个等于true的“就绪”列(准备好进行验证)。

因此,验证者可以查看今天的所有数据,无论其是否已经过验证,但是不应该看到用户还没有准备好被看到。

我尝试了几种不同的方式,例如:

Dim p = From t In db.batches _
        Where t.bDate > day1 And t.bDate < day2 And t.Ready = True Or t.BatchStatus = False _
            Order By t.BatchStatus Ascending _
            Select t

请帮我养头发;我现在有一把&amp;我不知道我能把它拖出来多久了!!!

谢谢!

3 个答案:

答案 0 :(得分:1)

使用括号。它会让事情变得更简单很多。此外,您可以使用Let子句使查询更简单,有效地在查询中提供“局部变量”。试试这个 - 语法可能略微偏离(我不是VB人),逻辑很可能不是你想要的,但它更容易理解IMO,所以应该更容易修改。

Dim p = From t In db.batches _
        Let createdToday = t.bDate > day1 And t.bDate < day2 _
        Where createdToday And (t.Ready Or Not t.BatchStatus) _
        Order By t.BatchStatus Ascending

答案 1 :(得分:1)

怎么样:

Dim p = From t In db.batches _
        Where (t.bDate.Date = DateTime.Today Or t.BatchStatus = False) _
               And t.Ready = True _
            Order By t.BatchStatus Ascending _
            Select t

答案 2 :(得分:0)

谢谢Jon!在我的案例中它是括号:

Dim p = From t In db.batches _
            Where (t.bDate > day1 And t.bDate < day2 And t.Ready = True) Or (t.BatchStatus = False And t.Ready = True) _
            Order By t.BatchStatus Ascending _
            Select t

再次感谢......头发慢慢地从死亡之握中移除......

相关问题