EF - 匿名类型不能有倍数......

时间:2016-11-29 11:53:58

标签: c# entity-framework

我有一个方法如下:

 using (ubmmsEntities db = new ubmmsEntities())
        {
            var result = (from l in db.log_documents
                          join t in db.teams on l.op_user_team equals t.id
                          where l.tracking_id == trackingID
                          select new { l.op_code, l.op_date, l.op_description, l.op_refer_code, l.op_refer_comments, t.team_name, l.id });
            return result.

现在我必须添加另一个列,并且在简单的SQL中我只需要添加两个内部联接,但我很遗憾如何在EF中执行此操作,下面的结果是t2.team_name&下的错误#34;匿名类型不能具有多个具有相同名称的属性"。

using (ubmmsEntities db = new ubmmsEntities())
        {
            var result = (from l in db.log_documents
                          join t in db.teams on l.op_user_team equals t.id
                          join r in db.refers_codes on l.op_refer_code equals r.code
                          join t2 in db.teams on r.id equals t2.id
                          where l.tracking_id == trackingID
                          select new { l.op_code, l.op_date, l.op_description, l.op_refer_code, l.op_refer_comments, t.team_name, l.id, t2.team_name });
            return result.ToList();
        }

所以,我在这里和那里看了一下,发现了this thread,但我无法弄清楚如何将解决方案应用到我的方法中。我用Google搜索" EF命名类型"并且类似于试图了解我的问题,但说实话,我自己也无法弄明白。

所以,我相信问题是因为EF希望我为我的db.team设置一个唯一的名称......我以为我通过调用t2来给它。这种方法适用于SQL,但我不明白如何将相同的方法应用于我的方法。我确实找到了一些线索,例如new{t2=t.id},但不同的地方会出现不同的错误。

请帮助/指示?

1 个答案:

答案 0 :(得分:1)

您可以为项目中的属性指定名称,即

.Select(x => new { firstItem = x.y, secondItem = x.x });

您可以使用它来解决您的问题。

或者,正如你所做的那样:

select new { firstItem = x.y, secondItem = x.x } .....