我有两个要加入_locations
和lrsLocations
的对象。我想使用相应的_locations
更新lrsLocations
属性。为此,我使用LINQ来获取对这两个选项的引用,然后将ms2
属性更新为lrs
(我知道这不是LINQ的用途,所以我对新的开放我正在使用这个LINQ查询:
var joinResult =
from
ms2 in _locations
from
lrs in lrsLocations
where
ms2.LRS_ID == lrs.attributes.route_id
&&
ms2.LRS_LOC_PT == lrs.attributes.measure
select
new {ms2, lrs};
它可以工作,但我确实需要一个LEFT OUTER JOIN
所以经过一些谷歌搜索我尝试:
var joinResult = from ms2 in _locations
join lrs in lrsLocations on new { ms2.LRS_ID, ms2.LRS_LOC_PT }
equals new { lrs.attributes.route_id, lrs.attributes.measure } into merge
from lrs in merge.DefaultIfEmpty()
select new { ms2, lrs };
问题是join lrs
投诉:http://i.imgur.com/5EAeFmx.png(点击查看图片)
所以我要么需要一种方法将我的工作LINQ转换为LEFT OUTER JOIN,或者理解新问题中正在讨论的问题,因为谷歌没有给我太多的见解。
答案 0 :(得分:0)
JOIN中的匿名类型必须具有相同的属性名称:
join lrs in lrsLocations on new { ms2.LRS_ID, ms2.LRS_LOC_PT }
equals new { LRS_ID = lrs.attributes.route_id, LRS_LOC_PT = lrs.attributes.measure }
显然类型也必须匹配。如果他们不需要转换或演员表。