C# 使用另一个查询的相同字段从LINQ构造对象

C# 使用另一个查询的相同字段从LINQ构造对象,c#,linq-to-sql,construction,C#,Linq To Sql,Construction,这就是一个例子 SQL 林克 这种情况经常发生,并且存在一些复杂的方法来使用相同的字段但从另一个视图构造对象,并使用 当我在C端进行这样的连接时,我得到了低性能、延迟加载等问题。无论如何,LINQ发出许多查询来获取每个细节记录,从性能角度来看是难以接受的 必须有明显的解决办法,我不能相信没有人面临同样的问题。 所有明显的解决方案,如dc.Translate,几乎都是一样的,但并不完全符合我的需要 感谢您的帮助。这能满足您的需要吗 Master = new Master() { Field1 =

这就是一个例子

SQL

林克

这种情况经常发生,并且存在一些复杂的方法来使用相同的字段但从另一个视图构造对象,并使用

当我在C端进行这样的连接时,我得到了低性能、延迟加载等问题。无论如何,LINQ发出许多查询来获取每个细节记录,从性能角度来看是难以接受的

必须有明显的解决办法,我不能相信没有人面临同样的问题。 所有明显的解决方案,如dc.Translate,几乎都是一样的,但并不完全符合我的需要


感谢您的帮助。

这能满足您的需要吗

Master = new Master() { Field1 = v.Field1, Field2 = v.Field2, Field3 = v.Field3 }
来自华盛顿大学硕士 在dc中连接d。m.键上的详细信息=d.键
选择新的{m,d}

对我来说这听起来很奇怪。使用视图的原因是在模型上有不同的视图,而不是访问原始模型


我建议您继续加入LINQ中的master detail表,如果您确实需要的话,您可以使用。在正确调整的情况下,LINQ可以进行急切加载,从而解决性能问题

尝试使用DataLoadOptions和LoadWith,请参阅:

例如

你不能吗 从v到dc.v_连接 选择新的{ Master=new{Column1Name=v.masterColumn1,Column2Name=v.masterColumn2,…}, 细节=v.oneDetail };
是的,没错,但我不想手动构造每个字段,我不确定我是否理解。您想要一个高性能的解决方案,但不想使用这种方法。你测试过它是否足够快吗?如果是这样的话,那么为什么不使用这个构造函数呢?我尝试过这种方法,根据对结果的进一步处理速度非常慢的判断,我想LINQ会发出单独的查询来获取每个细节记录,而它不会。上面的查询将导致一次点击。如果您遇到性能问题,请提供更多详细信息,例如db模式、表详细信息等。显然,我希望避免显式构造。当我尝试共享dataContext或使用外部dataContext时,这将导致问题。将引发异常。
var view = from v in dc.v_join select new
{
   Master = ???? /// that is an issue, how can I construct the objects using same fields but from another query,
   Detail = v.oneDetail

};

foreach (var entry in view)
{
  Master mEntry =  entry.Master; // then we can use it, there are no problems
}
Master = new Master() { Field1 = v.Field1, Field2 = v.Field2, Field3 = v.Field3 }
System.Data.Linq.DataLoadOptions dl = new System.Data.Linq.DataLoadOptions();
dl.LoadWith<Detail>( detail => detail.Master )