转换或转换 List到 EntityCollection

发布于 2024-08-23 11:26:22 字数 264 浏览 5 评论 0原文

您如何将 List 转换或转换为 EntityCollection

有时,当尝试“从头开始”创建子对象集合(例如从 Web 表单)时,会发生这种情况

 Cannot implicitly convert type 
'System.Collections.Generic.List' to 
'System.Data.Objects.DataClasses.EntityCollection'

How would you to convert or cast a List<T> to EntityCollection<T>?

Sometimes this occurs when trying to create 'from scratch' a collection of child objects (e.g. from a web form)

 Cannot implicitly convert type 
'System.Collections.Generic.List' to 
'System.Data.Objects.DataClasses.EntityCollection'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无可置疑 2024-08-30 11:26:22

我假设您正在谈论实体框架使用的 ListEntityCollection。由于后者具有完全不同的目的(它负责更改跟踪)并且不继承 List,因此没有直接转换。

您可以创建一个新的 EntityCollection并添加所有列表成员。

var entityCollection = new EntityCollection<TEntity>();
foreach (var item m in list)
{
  entityCollection.Add(m);
}

不幸的是,EntityCollection既不支持像 Linq2Sql 使用的 EntitySet 那样的赋值操作,也不支持重载的构造函数,所以这就是我上面所说的。

I assume you are talking about List<T> and EntityCollection<T> which is used by the Entity Framework. Since the latter has a completely different purpose (it's responsible for change tracking) and does not inherit List<T>, there's no direct cast.

You can create a new EntityCollection<T> and add all the List members.

var entityCollection = new EntityCollection<TEntity>();
foreach (var item m in list)
{
  entityCollection.Add(m);
}

Unfortunately EntityCollection<T> neither supports an Assign operation as does EntitySet used by Linq2Sql nor an overloaded constructor so that's where you're left with what I stated above.

我做我的改变 2024-08-30 11:26:22

一行:

list.ForEach(entityCollection.Add);

扩展方法:

public static EntityCollection<T> ToEntityCollection<T>(this List<T> list) where T : class
{
    EntityCollection<T> entityCollection = new EntityCollection<T>();
    list.ForEach(entityCollection.Add);
    return entityCollection;
}

使用:

EntityCollection<ClassName> entityCollection = list.ToEntityCollection();

In one line:

list.ForEach(entityCollection.Add);

Extension method:

public static EntityCollection<T> ToEntityCollection<T>(this List<T> list) where T : class
{
    EntityCollection<T> entityCollection = new EntityCollection<T>();
    list.ForEach(entityCollection.Add);
    return entityCollection;
}

Use:

EntityCollection<ClassName> entityCollection = list.ToEntityCollection();
沧桑㈠ 2024-08-30 11:26:22

不需要 LINQ。只需调用构造函数

List<Entity> myList = new List<Entity>();
EntityCollection myCollection = new EntityCollection(myList);

No LINQ required. Just call the constructor

List<Entity> myList = new List<Entity>();
EntityCollection myCollection = new EntityCollection(myList);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文