如何使用linq从表中获取有限的行

时间:2015-05-05 07:42:55

标签: c# linq

我有一个表,让我们说事务,它有几列,数据看起来像这样:

Id -------金额------- Isvoid ----------- ImpactId

1 -------- 300.00 ---------- 0 ---------------- NULL

2 -------- 500.00 ---------- 0 ---------------- NULL

显示交易发生时插入的数据。

现在当发生任何特定事务的空白时,会插入一个新行,并且该行的Isvoid为1,而ImpactId是无效的相应事务的Id。

假设金额500.00无效,表格如下:

Id -------金额------- Isvoid ----------- ImpactId

1 -------- 300.00 ---------- 0 ---------------- NULL

2 -------- 500.00 ---------- 0 ---------------- NULL

3 -------- 500.00 ---------- 1 ----------------- 2

现在我想要检索那些没有空洞的行。

Iam尝试在Linq中编写查询,如下所示,但它显示了所有记录。

from t in Context.Transaction.Where(t => t.Isvoid == false && t.ImpactID != null)

我只希望交易无效。

如何在Linq中编写相同内容。

提前致谢。

3 个答案:

答案 0 :(得分:1)

如果您将IsVoid的值写为数字,则查询必须如此:

from t in Context.Transaction.Where(t => t.Isvoid != 1 && t.ImpactID == null)

但是如果你把它写成布尔值,它应该是这样的:

from t in Context.Transaction.Where(t => t.Isvoid == false && t.ImpactID == null) 

答案 1 :(得分:1)

如果事务无效, !=

from t in Context.Transaction.Where(t => t.Isvoid == false && t.ImpactID == null)

答案 2 :(得分:0)

我知道你已经接受了答案,有一种简单的方法可以获得无效的交易。

var notVoided = Transactions.Where( t => t.ImpactId == null 
                && !Transactions.Any( t2 => t2.ImpactId == t.Id));