0

我正在使用 c# 处理 LINQ 和 MS SQL。我在获取记录时遇到问题。我有 2 个表,销售事务销售主键由事务表引用。数据就像, 在此处输入图像描述

我要做的是获取金额为 != 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。

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

在此先感谢,维杰

4

2 回答 2

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));

另一种方法是(假设您在上下文中有 Sales 和 Transaction 之间的关联);

List<Sales> sales = context.Sales.Where(s => !s.Transactions.Any(t=> t.Amount == 0));
于 2012-09-12T06:19:24.313 回答
-2

使用其中之一:

Enumerable.Any Enumerable.All

于 2012-09-12T05:54:18.303 回答