C# 使用LINQ向EntityCollection添加多个项
我正在尝试将C# 使用LINQ向EntityCollection添加多个项,c#,.net,linq,entity-framework,C#,.net,Linq,Entity Framework,我正在尝试将EntityCollection属性(v.TPM\u USER2)设置为数据库中的一部分用户。我有一个数组view.DNs,其中包含要添加的用户名列表。我可以这样做: if(view.DNs != null && view.DNs.Length > 0) { var users = (from u in context.TPM_USER where view.DNs.Contains(u.DN) select u); foreach (var u i
EntityCollection
属性(v.TPM\u USER2
)设置为数据库中的一部分用户。我有一个数组view.DNs
,其中包含要添加的用户名列表。我可以这样做:
if(view.DNs != null && view.DNs.Length > 0)
{
var users = (from u in context.TPM_USER where view.DNs.Contains(u.DN) select u);
foreach (var u in users)
{
v.TPM_USER2.Add(u);
}
}
这很好,但是我觉得有一种方法可以用一行代码来实现。我试过:
v.TPM_USER2 = (from u in context.TPM_USER where view.DNs.Contains(u.DN) select u);
这会导致错误:
错误78无法隐式转换类型
“System.Linq.IQueryable”到
'System.Data.Objects.DataClasses.EntityCollection
我也尝试过使用ToArray()
,但没有任何运气。有办法做到这一点吗
更新:
我还尝试:
v.TPM_USER2.Attach(from u in context.TPM_USER where view.DNs.Contains(u.DN) select u);
进行编译,但生成运行时错误:
当源对象与关联时,“附加”不是有效的操作
此相关端处于添加、删除或分离状态。物体
使用NoTracking合并选项加载的对象总是分离的
v.TPM_User2.AddRange(用户)代码>
Edit:这是针对EntitySet
-看起来您可能被foreach卡住了。或者,您可以编写自己的AddRange
扩展方法来执行循环,如果您只专注于一行的话。EntityCollection
似乎没有一个名为AddRange
的方法,它是一个扩展方法吗?哦,我想的是EntitySet
。是否尝试复制()?呃,这可能也不起作用-你可能只需要坚持使用foreachCopyTo
方法将EntityCollection
复制到一个数组,我想我需要类似于CopyFrom
-hmm的东西。是的-看起来你可能被困在foreach
中,或者写一个AddRange
扩展方法。