【发布时间】:2016-09-19 18:20:09
【问题描述】:
我试图告诉 .NET 创建一个新对象,从第一个数据集中获取属性并将连接结果附加到该新创建对象的一个属性中
var projects = from p in projectSet //projectSet is DbSet<Project>....
join lmp in LMProjects on p.ProjectID equals lmp.lmp_ProjectID
where p.UserID == value
select new Project { LMProject = lmp };
问题来了,我可以告诉它创建一个新对象,将连接的结果 (lmp) 分配给它的一个属性,但是我如何告诉它使用 p 的结果来启动新创建的对象的所有其他值?这甚至可以在不手动分配值的情况下实现吗(Project 类中大约有 30 个......)
我想过这样做,但这并不是我想要的。
var projects = from p in projectSet
join lmp in LMProjects on p.ProjectID equals lmp.lmp_ProjectID
where p.UserID == value
select new { Project = p, LMProject = lmp };
我这样做的原因是我有一个没有外键的数据库,我正在尝试模拟导航属性。 (我无法更改模型)
【问题讨论】:
-
这是最终查询吗,即您是否需要它保持 IQueryable 以供进一步处理?
-
目前,我没有任何限制。
-
可能我不清楚。目前您的
var projects是IQueryable<Project类型。将其更改为IEnumerable<Project>是否适合您? -
这似乎是 LINQ to Entities(即应该标记为
entity-framework,而不是linq-to-sql)?
标签: c# .net linq linq-to-entities