- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我编写了一个扩展方法来将项添加到 (EF) EntityCollection。我收到一个有趣的错误,说我的 IEnumerable(“items”)集合在 foreach 中的第一个循环之后已被修改。当我将 items 转换为 items.ToList() 时(如下面的代码),它工作正常。
我完全理解执行 ToList() 会生成项目的副本,然后 foreach 将对其进行操作。
我不明白的是,当我对它执行 foreach 时,是什么在修改 IEnumerable。
更新:不知何故,items 变量似乎与 collections 变量相同?
更新二:我觉得collection和entity可能会受到EF的entity tracking的影响,但是我还是没明白为什么
用法:
ssp.ServiceAreas.ReplaceCollection(model.ServiceAreas);
这是我的扩展方法:
public static void AddOrUpdate<TEntity>(this EntityCollection<TEntity> collection, IEnumerable<TEntity> items)
where TEntity : EntityObject, IProjectIdentity<int>, new()
{
foreach (var item in items.ToList())
collection.AddOrUpdate(item);
}
public static void AddOrUpdate<TEntity>(this EntityCollection<TEntity> collection, TEntity item)
where TEntity : EntityObject, IProjectIdentity<int>, new()
{
if (item.ID > 0 && collection.Any(c => c.ID == item.ID))
collection.Remove(collection.First(c => c.ID == item.ID));
// For now, the Remove NEVER gets hit
collection.Add(item);
}
最佳答案
collection.Remove(collection.First(c => c.ID == item.ID));
您正在迭代的集合中删除。
关于C#修改IEnumerable之谜,修改我的IEnumerable是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8789660/
我一直在使用高精度时间在控制台中记录我的程序事件。但很快我就注意到程序有时会显示四舍五入到毫秒的时间,有时则不会!它完全偶尔发生,它是相同的代码,未重新编译,未在运行之间编辑: using Syste
首先:该代码被认为是纯粹的乐趣,请在生产中不要做任何类似的事情。在任何环境下编译并执行这段代码后,对于您,您的公司或您的驯鹿造成的任何伤害,我们概不负责。以下代码不安全,不可移植,并且非常危险。被警告
我正在投影图像,然后检查它: 高度是20px。这是正确的。 然后我检查包含 img 的 data-radium 元素,令我惊讶的是: 尽管没有内容,该元素的高度“增长”了两个像素。此外,data-ra
我是一名优秀的程序员,十分优秀!