2013-03-07 2 views
1

У меня есть ObservableCollection с 4 столбцами, заполненными во время выполнения.Выберите единую колонку из коллекции Observable Object

public ObservableCollection<object> SelectedRows; 

Я хочу, чтобы получить значение столбцов Id из этой коллекции, но я не могу получить это с помощью LINQ, потому что во время компиляции я не знаю, что столбец Id присутствует в коллекции.

ответ

0

Может быть что-то вроде этого:

vat w = from s in db.table 
     select s.id; 

foreach (var i in w) 
{ 
    console.writeln(i); 
} 
+0

Это не сработает, потому что s.id недоступен. Этот идентификатор не указывается во время объявления и не появляется во время выполнения. – user2143207

+0

Это сработало для меня: var selectedIndexId = from itemSelectedRows в LstIndexId.ToList () select itemSelectedRows.GetType(). GetProperty («Id»). GetValue (itemSelectedRows, null); – user2143207

0
var selectedIndexId = from itemSelectedRows in <YourListName>.ToList<object>() 
         select itemSelectedRows.GetType().GetProperty("Id").GetValue(itemSelectedRows, null); 
0

Вы можете сделать связывание это, используя данные:

<ListBox ItemsSource="{Binding SelectedRows}" 
     DisplayMemberPath="The property to be displayed" 
     SelectValuePath="The property that SelectedValue would bind to" 
     SelectedValue="{Binding SelectedRowId}" /> 

Если вам нужно сделать это в C#, я настоятельно рекомендую ваши объекты реализовать общий интерфейс, к которому вы можете применить. В противном случае вы можете использовать ключевое слово dynamic:

SelectedRows.Cast<dynamic>().Select(d => (int)d.Id) 
Смежные вопросы