如何在wpf中将EF返回的列表转换为observableList

如何在wpf中将EF返回的列表转换为observableList,wpf,entity-framework,Wpf,Entity Framework,我是wpf的新手。我正在尝试使用entityframework在wpf中创建crud。 这是我的模型 class User : INotifyPropertyChanged { private string _id; private string _firstName; private string _lastName; public User() { } public string ID { get { r

我是wpf的新手。我正在尝试使用entityframework在wpf中创建crud。 这是我的模型

 class User : INotifyPropertyChanged
{
    private string _id;
    private string _firstName;
    private string _lastName;


    public User()
    {
    }

    public string ID
    {
        get { return _id; }
        set
        {
            _id = value;
            NotifyOfPropertyChange("ID");
        }
    }
    public string FirstName
    {
        get { return _firstName; }
        set
        {
            _firstName = value;
            NotifyOfPropertyChange("FirstName");
        }
    }
    public string LastName
    {
        get { return _lastName; }
        set
        {
            _lastName = value;
            NotifyOfPropertyChange("LastName");
        }
    }


    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyOfPropertyChange(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
    #endregion
}
当我添加ado.net数据模型文件时,它会创建如下类

 public partial class User
{
    public string ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
所以当我试着像这样分配列表时

 ObservableCollection<User> lst = new ObservableCollection<User>();
            lst = _entity.Users.ToList();
这给了我错误

Error   1   Cannot implicitly convert type 'System.Collections.ObjectModel.ObservableCollection<TEST.User>' to 'System.Collections.Generic.List<TEST.Model.User>'   D:\my_backup\WPF\TEST\TEST\Model\PersonnelBusinessObject.cs 15  24  TEST

如何根据我的类格式将其转换为。请提供帮助。

您可以通过LINQ Select方法将一种集合类型映射到另一种集合类型:


可以通过LINQ Select方法将一种集合类型映射到另一种集合类型:


Try observateCollection lst=new observateCollection_entity.Users.ToListi也尝试了这个方法。仍然得到相同的错误:正如我从错误消息中了解到的,您试图将不同的用户类TEST.User转换为TEST.Model.User。编译器只是不知道默认情况下如何进行这种转换。您可以尝试_entity.Users.ToList.Selectu=>new TEST.Model.User{Id=u.Id,FirstName=u.FirstName,LastName=u.LastName,}并从生成的IEnumerable中进行ObservableCollection。c编译器不知道如何在两种用户类型之间进行转换。在这些类型之间编写转换器,或在初始化时填充ViewModel属性。@Clemens太多次了,我看到贡献者在注释中写的太多了,所以答案很明显。。。轮到我了;Try observateCollection lst=new observateCollection_entity.Users.ToListi也尝试了这个方法。仍然得到相同的错误:正如我从错误消息中了解到的,您试图将不同的用户类TEST.User转换为TEST.Model.User。编译器只是不知道默认情况下如何进行这种转换。您可以尝试_entity.Users.ToList.Selectu=>new TEST.Model.User{Id=u.Id,FirstName=u.FirstName,LastName=u.LastName,}并从生成的IEnumerable中进行ObservableCollection。c编译器不知道如何在两种用户类型之间进行转换。在这些类型之间编写转换器,或在初始化时填充ViewModel属性。@Clemens太多次了,我看到贡献者在注释中写的太多了,所以答案很明显。。。轮到我了;
using System.Linq;
...

var lst = new ObservableCollection<User>(
    _entity.Users.Select(u =>
        new User { ID = u.ID, FirstName = u.FirstName, LastName = u.LastName }));