8,494
社区成员




var query = from equ in A
join data in B.Where(d => System.Data.Objects.SqlClient.SqlFunctions.DateDiff("s", data.InsertTime, DateTime.Now) < 30).GroupBy(d => d.EquId)
on A.EquId equals data.Key into groups
from g in groups.DefaultIfEmpty()
select new
{
equ.EquId
equ.EquName,
Value = data.Average(d => d.Value),
};
B表的查询条件也可以放在join的后面
var query = tableA.GroupJoin(tableB.Where(p => p.InsertTime >= DateTime.Now.AddSeconds(-30)), a => a.EquId, b => b.EquId, (a, b) => new
{
a.EquName,
a.EquId,
Value = b.Any() ? b.Average(p => p.Value).ToString() : "已掉线"
});
var query = from equ in A
join d in
(from b in B
where SqlFunctions.DateDiff("s", b.InsertTime, DateTime.Now) <= 30
group b by b.EquId into g
select new { ID = g.Key, Value = g.Average(d => d.Value) }
)
on A.EquId equals d.ID into groups
from d in groups.DefaultIfEmpty()
select new
{
equ.EquId,
equ.EquName,
Value = d == null ? null : d.Value
};
楼上的基础上进行调整