У меня есть тестовая установка набора как:
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);
}
После того как мне создали этот набор, я хотел бы смочь преобразовать Заметный Набор в список типов.
Причиной позади этого является мой основной проект, получает универсальный список с данными, я должен преобразовать его в Заметный набор для использования в gridview, поля списков и т.д. Данные выбраны в UI и затем переданы обратно инициирующему блоку для дальнейшего использования.
Я думаю, что самый быстрый способ сделать это - использовать LINQ.
List<Person> personList= MySelectedPeople.ToList();
Ура.
Попробуйте следующее.
var list = MyselectedPeople.ToList();
Убедитесь, что у вас есть System.Linq
в качестве одного из операторов using.
Это должно сработать ...
List<Person> myList = MyselectedPeople.ToList<Person>();
Я просто хочу отметить, что, помимо очевидного метода расширения Linq, у List всегда была перегрузка, которая принимает IEnumerable
return new List<Person>(MyselectedPeople);
Странно, что ваша внутренняя сборка закодирована так, чтобы принимать только List
. Это очень ограничительно и мешает вам делать полезные вещи, такие как передача массива или ObservableCollection
, или Collection
, или ReadOnlyCollection
, или свойств ключей или значений Dictionary
, или любого из множества других подобных списков вещей.
Если возможно, измените внутреннюю сборку, чтобы она принимала IList
. Затем вы можете просто передать свою ObservableCollection
как есть, без необходимости копировать ее содержимое в List
.