我试图在三列上联接两个表,但出现错误:

error CS1941: The type of one of the expressions in the join clause is incorrect.  Type inference failed in the call to 'Join'.


我不确定发生了什么。我检查了st_yearst_monthst_day yearmonthday的类型,它们都是int,所以我不应该得到此错误。

代码是:

var q = from obj in objTimeLine
                        join ev in eventsTimeLine
                        on new {obj.st_year, obj.st_month, obj.st_day} equals new {ev.year, ev.month, ev.day}
                        select new {obj, ev};


但是,如果我这样做:

var q = from obj in objTimeLine
                            join ev in eventsTimeLine
                            on obj.st_year equals ev.year
                            select new {obj, ev};


这样就没有错误了,一切都很好,但是我不知道如何加入另外2列。

最佳答案

您需要确保匿名类型具有相同的属性名称,如下所示:

on new { Year = obj.st_year, Month = obj.st_month, Day = obj.st_day}
equals new { Year  = ev.year, Month = ev.month, Day = ev.day}

关于c# - 使用linq在两个表中通过多列进行简单联接的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7328308/

10-10 18:49
查看更多