C# 使用multiselect从列表框中检索选定值

C# 使用multiselect从列表框中检索选定值,c#,wpf,listbox,anonymous-types,multi-select,C#,Wpf,Listbox,Anonymous Types,Multi Select,我使用LINQ加载了一个WPF列表框: lbxCalculosSec.ItemsSource = from p in database.CALCULOS orderby p.NOMBRECALCULO select new { ID = p.IDCALCULO, NOMBRE = p.NOMBRECALCULO + " - " + p.DESCRIPCIONCALCULO };

我使用LINQ加载了一个WPF列表框:

lbxCalculosSec.ItemsSource = from p in database.CALCULOS
                             orderby p.NOMBRECALCULO
                             select new { ID = p.IDCALCULO, NOMBRE = p.NOMBRECALCULO + " - " + p.DESCRIPCIONCALCULO };

lbxCalculosSec.DisplayMemberPath = "NOMBRE";
lbxCalculosSec.SelectedValuePath = "ID";
列表框的multiselect=true。问题是当我试图从SelectedItems列表中检索所有SelectedValue(ID)时

当我在运行时检查一个SelectedItem时,对象类型是“f_uuAnonymousType0`2”

我试着用这个:

ItemPropertyInfo ID  = null;

lbxCalculosSec.SelectedItem.GetType().GetProperty("ID").GetValue(ID as ItemPropertyInfo, null)
但它不起作用

我需要一个解决方案来访问列表框中选定的值(ID字段)

事先非常感谢


亲切问候。

GetValue
需要值的源代码,因此您应该在那里使用SelectedItem,而不是一些随机值,并且绝对不能为null。

GetValue
需要定义属性的实例,在本例中是
SelectedItem

var item = lbxCalculosSec.SelectedItem;
ItemPropertyInfo ID  = (ItemPropertyInfo)item.GetType()
                                             .GetProperty("ID")
                                             .GetValue(item, null);
编辑
如果
ID
为其他类型,如int,则代码应为:

var item = lbxCalculosSec.SelectedItem;
int ID  = (int)item.GetType()
                   .GetProperty("ID")
                   .GetValue(item, null);

此解决方案只需稍作更改即可工作。ID必须是int类型,而不是ItemPropertyInfo。