2009-11-20 3 views
0

У меня есть класс MyObj и коллекция IEnumerable. Некоторые столбцы полностью пусты (т. Е. == NULL) для всех строк, и поэтому я хочу создать IEnumerable <> членов MyObj, которые содержат ненулевое значение.LINQ to IEnumerable <MyObj>

Если бы я мог предсказать членов MyObj, которые были бы интересны, я хотел бы сделать что-то вроде:

var part = 
    from entry in iList 
    select new {entry.a, entry.c, entry.s}; 

... но я не знаю, какие члены MyObj я заинтересован в в время разработки - я знаю только это во время выполнения.

Как я могу составить свой список?

Thanks,

Tamim Sadikali.

+1

Да? Что ты пытаешься сделать. Кажется, не имеет смысла ... –

ответ

0

Ваш вопрос не имеет смысла.

Вы пытаетесь создать тип, члены которого известны только во время выполнения.
Что вы будете делать с результатами?
Вы не сможете получить доступ к каким-либо свойствам объектов результата, потому что они могут отсутствовать.

Если вы хотите отображать данные в сетке и не хотите отображать столбцы, которые являются полностью нулевыми, тогда вы должны привязать исходную коллекцию к сетке, а затем скрыть некоторые из столбцов в сетке.

0

Ожидание выпуска VS2010, C# 4.0 с его динамическим типом должно решить вашу проблему. (Или, может быть, поможет вам стрелять в ногу).

+0

Слово 'dynamic' здесь не поможет; вопрос не имеет никакого смысла. – SLaks

+0

Но MethodBags должен? – nothrow

0

Если вы делаете это для пользовательского интерфейса, лучше спрячьте столбцы, содержащие все значения NULL. Для DataGridView в WinForms это может выглядеть так:

foreach (DataGridViewColumn column in dataGridView.Columns) 
    if (dataGridView1.Rows.Cast<DataGridViewRow>().All(r => r.Cells[column.Name].Value == null)) 
     column.Visible = false; 
Смежные вопросы