我有一个非常复杂的查询,基本上我有一个表a,它反过来需要从表b,表c和表d中获取值。我需要从表c和d中获取某些内容的最大值,因此我按表a的ID进行分组。我还从表a到表b,c和d留下外连接。
然而,返回的结果是这样的。
id = 1 column x = 0000001
id = 2 column x = 0000001
id = 3 column x = 0000004
id = 3 column x = 0000005
id = 4 column x = 0000001
正如您所见,我希望从列x获取最大值为id 3,而不是两者的值。
我的查询如下:
var q = from t1 in Table1.ToExpandable()
group t1 by t1.id into gt
join t2 in Table2 on gt.FirstOrDefault().FieldID1 equals t2.ID into gt2 from t2 in gt2.DefaultIfEmpty()
join t3 in Table3 on gt.FirstOrDefault().FieldID2 equals t3.ID into gt3 from t3 in gt3.DefaultIfEmpty()
join t4 in Table4 on gt.FirstOrDefault().FieldID3 equals t4.ID into gt4 from t4 in gt4.DefaultIfEmpty()
select new
{
Id = gt.FirstOrDefault().ID,
T2FieldName = gt2.FirstOrDefault().T2FieldName,
T3FieldName = gt.Max(x => gt3.FirstOrDefault().T3FieldName),
T4FieldName = gt.Max(x => gt4.FirstOfDefault().T4FieldName)
}
任何帮助都将不胜感激。