我想获取这样的数据,但它在where子句中给出了一个错误 在Linq中写这个查询
var q = (from a in dt.AsEnumerable()
join b in dt2.AsEnumerable() on a.Field<string>("id") equals b.Field<string>("id")
into y
from z in y.DefaultIfEmpty()
where a.Field<int>("ref_id") != b.Field<int>("ref_id")
select new wrongreferralDTO(){
c_id = a.Field<int>("captain_id"),
event_time = a.Field<DateTime>("event_time")
}).ToList();
答案 0 :(得分:0)
你应该这样试试,
var refIdsToremove = dt2.AsEnumerable().Select(b => b.Field<int>("ref_id")).ToList();
var q = (from a in dt.AsEnumerable()
join b in dt2.AsEnumerable() on a.Field<string>("id") equals b.Field<string>("id")
into y
from z in y.DefaultIfEmpty()
where !refIdsToremove.Contains( a.Field<int>("ref_id") )
select new
{
c_id = z.Field<int>("captain_id"),
event_time = z.Field<DateTime>("event_time")
}).ToList();
因为当你将into y
b变量放在范围之外时,你无法在加入其他变量y后访问b