繁体   English   中英

使用LINQ从表中获取最后一个事务

[英]Getting last transaction from a table using LINQ

我正在使用c#使用LINQ和MS SQL。 我在获取记录时遇到问题。 我有2个表,交易表所引用的是Sales Transactions Sales主键。数据就像, 在此处输入图片说明

我想做的是获取量为!= 0的所有记录。在此示例中,结果应仅包括Sales2和Sales3,而不包括Sales1。 由于Sales1已关闭。

我写了一个查询,

List<Sales> lstSales = (from ccs in context.Sales
                        join transactions in context.Transactions 
                             on ccs.SALESID equals  transactions.SALESID            
                        where transactions .AMOUNT !=0 
                       select ccs).ToList();

它返回我所有3条销售记录,因为针对Sales1的1行,金额!= 0。

请指导我达到期望的结果。

在此先感谢,维杰

尽管您的查询会过滤掉已关闭的交易,但结果中仍有> 0个交易,因此您仍然可以获得Sales1 ID。

尝试一下(它应该可以工作,尽管我还没有测试过);

IEnumerable<int> closedIds = context.Transactions.Where(t => t.Amount == 0).Select(t=> s.SalesId);
List<Sales> sales = context.Sales.Where(s => !closedIds.Contains(s.SalesId));

另一种方法是(假设您在上下文中具有“销售”和“交易”之间的关联);

List<Sales> sales = context.Sales.Where(s => !s.Transactions.Any(t=> t.Amount == 0));

利用以下之一:

枚举任何 枚举全部

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM