【发布时间】:2010-07-19 20:08:41
【问题描述】:
我有三个表,需要编写一个 linq 查询,该查询基于两个不同的连接从所有活动中提取。
- 我需要 ActivityVolunteers 中存在志愿者的所有活动
- 我需要OrganizationID 在Activity 表中并且志愿者属于组织(OrganizationVolunteers) 但不在ActivityVolunteers 中的所有活动。志愿者可能不属于活动,但属于组织。
下面是我尝试编写 Linq 的表结构。
活动- 活动 ID
- 活动名称
- 组织 ID
- 活动 ID
- 志愿者编号
- 活动角色
- 组织 ID
- 志愿者编号
这是我在 linq 上的弱尝试,我无法弄清楚加入两个结果集以仅获得独特的活动。
from a in Activities
join av in ActivityVolunteers on a.ActivityID equals av.ActivityID
where av.VolunteerID==1
select new
{
a.ActivityID,
a.ActivityName,
av.ActivityRole,
a.OrganizationID
}
from org in (from a in Activities
join ov in OrganizationVolunteers on a.OrganizationID equals ov.OrganizationID
where ov.VolunteerID==1
select new
{
a.ActivityID,
a.ActivityName,
ActivityRole = "Prospect",
a.OrganizationID
})
select org
我尝试了一个联合,但它正在复制记录。
(from a in Activities
join av in ActivityVolunteers on a.ActivityID equals av.ActivityID
where av.VolunteerID==1
select new
{
a.ActivityID,
a.ActivityName,
av.ActivityRole,
a.OrganizationID,
OrganizationName = (from o in Organizations where o.OrganizationID == a.OrganizationID select o.OrganizationName).FirstOrDefault()
}).Union
(from a in Activities
join ov in OrganizationVolunteers on a.OrganizationID equals ov.OrganizationID
where ov.VolunteerID==1
select new
{
a.ActivityID,
a.ActivityName,
ActivityRole = "Prospect",
a.OrganizationID,
OrganizationName = (from o in Organizations where o.OrganizationID == a.OrganizationID select o.OrganizationName).FirstOrDefault()
})
【问题讨论】:
-
我想我正在寻找一个只提供不同的联合。
-
Union提供了不同的答案...
标签: linq