求高效查旬语句,万分感谢
public class StatusA
{
public String StatusID { get; set; }
public String BID { get; set; }
}
public class StatusB : StatusA
{
public Boolean IsDone { get; set; }
}
public class ValueA
{
public String VID { get; set; }
}
public class ValueB:ValueA
{
public String StatusID { get; set; }
public String BID { get; set; }
}
public class ddd
{
public List<StatusA> Statusa = new List<StatusA>();
public List<StatusB> Statusb = new List<StatusB>();
public List<Value> ValueA = new List<Value>();
public List<Value> ValueB = new List<Value>();
}
vs.VID is null
vs是什么?
[解决办法]
var query=from sa in StatusA
join sb in StatusB on new {sa.StatusID , sa.BID} equals new {sb.StatusID ,sb.BID}
where sb.IsDone
join vb in
Valueb on new {sb.StatusID,sb.BID} equals new {vb.StatusID,vb.BID}
join va in
Valuea.Where(x=>!x.VID.HasValue) on vb.VID equlas va.VID into leftJoin
from va in leftJoin.DefalultIfEmpty()
select new {sa,sb,vb,v=va==null?null:va};
var query1 = Statusb.Where(w => w.IsDone && Statusa.Any(a => a.StatusID == w.StatusID && a.BID == w.BID));
IEnumerable<ValueB> query2 = ValueB.Where(w => query1.Any(a => a.BID == w.BID && a.StatusID == w.StatusID) && ValueA.All(a => a.VID != w.VID));