我有一个方法如下:
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}
,但不同的地方会出现不同的错误。
请帮助/指示?
答案 0 :(得分:1)
您可以为项目中的属性指定名称,即
.Select(x => new { firstItem = x.y, secondItem = x.x });
您可以使用它来解决您的问题。
或者,正如你所做的那样:
select new { firstItem = x.y, secondItem = x.x } .....