无法推断LINQ类型参数

时间:2015-07-22 15:07:47

标签: c# linq join

我有两个要加入_locationslrsLocations的对象。我想使用相应的_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,或者理解新问题中正在讨论的问题,因为谷歌没有给我太多的见解。

1 个答案:

答案 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 }

显然类型也必须匹配。如果他们不需要转换或演员表。