art*_*olk 12 c# linq linq-to-sql
我简单的Linq2Sql查询:
var result = from t in MyContext.MyItems
select new MyViewModelClass()
{
FirstProperty = t,
SecondProperty = new SomeLinq2SqlEntity()
}
Run Code Online (Sandbox Code Playgroud)
问题是它似乎new SomeLinq2SqlEntity()只对序列执行一次,因此MyViewModelClass查询结果的所有实例共享一个对象的链接.
更新:以下是我如何快速检查它:
result[0].SecondProperty.MyField = 10;
Run Code Online (Sandbox Code Playgroud)
使用调试器我可以检查在所有实例中都MyField设置了10.
当我用foreach替换LINQ查询时,它按预期工作:
var result = from t in MyContext.MyItems select t;
var list = new List<MyViewModelClass>();
foreach (var item in result)
{
list.add(new MyViewModelClass()
{
FirstProperty = item,
SecondProperty = new SomeLinq2SqlEntity()
});
}
Run Code Online (Sandbox Code Playgroud)
我没有找到问题的根源,但标记为asnwer的帖子提供了良好的解决方法.请查看此asnwer以获取详细说明:具体类型投影中的"new"仅调用一次
您是否尝试过使用SomeLinq2SqlEntitylinq to objects 添加对象?
var result = (from t in MyContext.MyItems
select new
{
FirstProperty = t
})
.AsEnumerable()
.Select(t => new MyViewModelClass()
{
FirstProperty = t.FirstProperty ,
SecondProperty = new SomeLinq2SqlEntity();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |