我正在使用c#使用LINQ和MS SQL。我在获取记录方面遇到了问题。我有两张桌子, 销售 交易 Sales表中引用了Sales主键.Data就像,
我要做的是获取金额的所有记录!= 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 :(得分:0)
虽然您的查询会过滤掉已关闭的交易,但您仍然拥有&gt;结果中有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));
答案 1 :(得分:-2)
利用以下其中一项: