Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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# 有没有办法将可观测集合转换为常规集合?_C#_Wpf_Observablecollection - Fatal编程技术网

C# 有没有办法将可观测集合转换为常规集合?

C# 有没有办法将可观测集合转换为常规集合?,c#,wpf,observablecollection,C#,Wpf,Observablecollection,我已将测试集合设置为: ObservableCollection<Person> MyselectedPeople = new ObservableCollection<Person>(); public MainWindow() { InitializeComponent(); FillData(); } public void FillData() { Person p1 = new Person

我已将测试集合设置为:

ObservableCollection<Person> MyselectedPeople = new ObservableCollection<Person>();

public MainWindow()
    {
       InitializeComponent();
       FillData();
    }

public void FillData()
    {
        Person p1 = new Person();
        p1.NameFirst = "John";
        p1.NameLast = "Doe";
        p1.Address = "123 Main Street";
        p1.City = "Wilmington";
        p1.DOBTimeStamp = DateTime.Parse("04/12/1968").Date;
        p1.EyeColor = "Blue";
        p1.Height = "601";
        p1.HairColor = "BRN";

        MyselectedPeople.Add(p1);
    }
observedcollection MyselectedPeople=newobservedcollection();
公共主窗口()
{
初始化组件();
FillData();
}
公共数据()
{
人员p1=新人员();
p1.NameFirst=“约翰”;
p1.NameLast=“Doe”;
p1.地址=“大街123号”;
p1.城市=“威尔明顿”;
p1.DOBTimeStamp=DateTime.Parse(“04/12/1968”)。日期;
p1.EyeColor=“蓝色”;
p1.高度=“601”;
p1.HairColor=“BRN”;
MyselectedPeople.Add(p1);
}
一旦构建了这个集合,我希望能够将可观察集合转换为类型列表

这背后的原因是我的主要项目接收到一个包含数据的通用列表,我必须将其转换为可观察的集合,以便在gridview、列表框等中使用。数据在UI中被选中,然后发送回原始程序集以供进一步使用。

请尝试以下操作

var list = MyselectedPeople.ToList();
确保将
System.Linq
作为使用语句之一。

这应该可以做到

List<Person> myList = MyselectedPeople.ToList<Person>();
List myList=MyselectedPeople.ToList();

我认为最快的方法是使用LINQ

 List<Person> personList= MySelectedPeople.ToList(); 
List personList=MySelectedPeople.ToList();

干杯。

我只想指出,除了明显的Linq扩展方法之外,List总是有一个重载,它需要一个
IEnumerable

返回新列表(MyselectedPeople);

奇怪的是,后端程序集被编码为只接受
列表。这是非常严格的,并且阻止您执行有用的操作,例如传递数组、或
可观察集合、或
集合、或
只读集合、或
字典的键或值属性,或任何其他类似列表的事情


如果可能,请将后端程序集更改为接受
IList
。然后您可以按原样传入您的
ObservableCollection
,而无需将其内容复制到
列表中

我见过设计糟糕的遗留库或第三方程序集,这些库或第三方程序集常常会发现他的问题很奇怪。
return new List<Person>(MyselectedPeople);