【发布时间】:2015-06-23 18:23:56
【问题描述】:
我有两个名为 CountryMobility 的对象,我认为我需要将它们与完整的外部联接结合起来。如何使用 linq 做到这一点?
public class CountryMobility
{
public string countryCode { get; set; }
public int inbound { get; set; }
public int outbound { get; set; }
}
我想像这样组合其中两个对象:
inboundStudents:
countryCode | inbound | outbound
EG | 2 | 0
CA | 3 | 0
CH | 5 | 0
outboundStudents:
countryCode | inbound | outbound
PE | 0 | 1
CA | 0 | 4
CH | 0 | 5
-
-
-
-
V
combinedStudents:
countryCode | inbound | outbound
PE | 0 | 1
CA | 3 | 4
CH | 5 | 5
EG | 2 | 0
我尝试了以下 linq 语句,但未能找出正确的语法。我目前在附近遇到语法错误 temp.DefaultIfEmpty(new { first.ID, inbound = 0, outbound=0 }) 在两个语句中。
var leftOuterJoin =
from first in inboundActivities
join last in outboundActivities
on first.countryCode equals last.countryCode
into temp
from last in temp.DefaultIfEmpty
(new { first.countryCode, inbound = 0, outbound=0 })
select new CountryMobility
{
countryCode = first.countryCode,
inbound = first.inbound,
outbound = last.outbound,
};
var rightOuterJoin =
from last in outboundActivities
join first in inboundActivities
on last.countryCode equals first.countryCode
into temp
from first in temp.DefaultIfEmpty
(new { last.countryCode, inbound = 0, outbound = 0 })
select new CountryMobility
{
countryCode = last.countryCode,
inbound = first.inbound,
outbound = last.outbound,
};
var fullOuterJoin = leftOuterJoin.Union(rightOuterJoin);
【问题讨论】:
-
LINQ - Full Outer Join 的可能重复项
-
您尝试过哪些 linq 语句,它们产生了什么?他们有什么不正确的地方需要帮助?
-
@Josh L. 试过了,但我无法让它正常工作。我认为问题在于它正在输出一个匿名对象,而我无法将其作为我的“CountryMobility”对象输出。
-
我在您的问题中没有看到对
CoutryMobility对象的任何引用。因此,任何涉及CountryMobility的事情肯定与任何解决方案都无关。 -
您需要编写 3 个查询。一个用于左侧,一个用于右侧,最后一个用于连接。检查这个stackoverflow.com/questions/5489987/linq-full-outer-join