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);