Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ向EntityCollection添加多个项_C#_.net_Linq_Entity Framework - Fatal编程技术网

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
。是否尝试复制()?呃,这可能也不起作用-你可能只需要坚持使用foreach
CopyTo
方法将
EntityCollection
复制到一个数组,我想我需要类似于
CopyFrom
-hmm的东西。是的-看起来你可能被困在
foreach
中,或者写一个
AddRange
扩展方法。