Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 导致重复ID的联接_C#_Linq - Fatal编程技术网

C# 导致重复ID的联接

C# 导致重复ID的联接,c#,linq,C#,Linq,我有一个相当复杂的查询,基本上我有表a,表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 如您所见,我希望从id

我有一个相当复杂的查询,基本上我有表a,表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
如您所见,我希望从id 3的x列中获取最大值,而不是两者的值

我的查询如下所示:

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)
}

任何帮助都将不胜感激。

看来您需要另一个级别的团队。对你的
q
结果进行分组。什么是最理想的方法?在数据库中创建一个视图以满足你的需要(并调用它)可能是最有效的方法。关于最佳方法,请参阅