我浏览了数百个示例,但仍然找不到我想要的东西。
public class CA
{
public int Id {get;set;}
public List<SignOff> SignOffs {get;set}
}
public class SignOff
{
public int Id {get;set;}
public int CAId {get;set;}
public bool IsCurrentQtr {get;set;}
}
我目前有一个搜索功能,可以向我返回IQueryable<CA> qry
。现在,我需要使用该IQueryable<CA>
并在IsCurrentQtr == true
处加入所有SignOffs,但是我想在SignOffs == null || SignOffs.Count == 0
处选择所有CA。
它需要使用方法语法。另外,请记住,CA表中实际上有大约50列数据与其他15个FK关系,而签核表中大约有70列数据,并且它使用的是SQL Server 2017。
有人可以帮我写这个linq查询吗?
编辑1: 仅供参考,这也让我感到困惑,但这就是向我解释的方式。在试图更好地解释这一点时,我想到了一种新的陈述方式。我需要选择所有没有签名记录的CA,其中IsCurrentQtr为true。
答案 0 :(得分:2)
我需要选择所有没有签名记录的CA,其中IsCurrentQtr为true。
然后您的查询应如下:
var caList = db.CAs.Where(ca => ca.SignOffs.All(sf => sf.IsCurrentQtr == false)).ToList();
// or
var caList = db.CAs.Where(ca => ca.SignOffs.Count(sf => sf.IsCurrentQtr) == 0).ToList();
答案 1 :(得分:0)
根据您的修改,您需要此结果。
var result = cs.Where(x => !x.Any(r => r.IsCurrentQtr));
这将在IsCurrentQtr == true的情况下查找所有没有签署记录的CA。