| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > LINQ (Language-Integrated Query) > IEnumerable ReturnData(IEnumerable data) |
| Автор: Gregoryy 8.3.2009, 02:11 | ||||||
Есть метод
Пытаюсь передать эму результат такого запроса
Чтобы в этом методе выполнить с data еще пару манипуляций типа
Значения х и у будет браться из свойств класса где реализован метод. Вот только не могу понять правильно ли я реализовал метод. Если да, тогда как привести в тип чтобы можно было выполнить такие манипуляции? Результат выполнения метода хочу вернуть в ListView.DataSource |
| Автор: Любитель 10.3.2009, 02:16 |
| 1. Твой запрос нескомпилится. А именно - ты создаёшь анонимный тип без именования пропертей (кроме суммы). Так нельзя 2. Большинство экстеншен-методов от Enumerable применимы только к дженерик-версии IEnumerable. Проблма в том, что для анонимного типа ты не сможешь объявить сигнатуру дженерик-версии IEnumerable. Потому - создай свой тип, возвращай IEnumerable<MyType>. И разберись с инициализацией пропертей при вызове конструктора (с использованием синтаксиса C# 3.0). Ещё такой момент - ты уверен, что тебе всегда нужна эта сумма? Может проще вернуть просто твой news (тогда тип для IEnumerable уже будет готов)? А, если понадобятся, посчитать суммы. |
| Автор: Gregoryy 10.3.2009, 22:42 | ||||||||
| Любитель, запрос работает нормально. Данные выводятся. PashaPash, Не совсем понял что ты имеешь виду внутри? Дело в том что когда я передаю данные в метод, который принимает и возвращает IEnumerable, я не могу с ними нечего сделать. Если точно сказать data не имеет методы фильтрации. Я приводил в тип List<IEnumerable> вроде фильтрация активировалась. Но свойства отсутствуют или данные просто пустые. Я уже по разному пробовал. Но так и не понял как правильно сделать. Например если сделать так:
Если вот так:
|
| Автор: Любитель 11.3.2009, 00:01 |
О, позор мне! Блин, не знал Gregoryy, Skip, Take и прочие действительно (как правильно сказал PashaPash) можно заставить работать, вернув IEnumerable<object>. Для получения последнего используется экстеншен-метод Cast. Но пройти по пропертям всё равно не получится. Более того, после такой манипуляции (возвращения анонимного типа) с пропертями можно будет работать только через рефлекшен. Что вряд ли удобно |
| Автор: PashaPash 11.3.2009, 11:58 | ||
Gregoryy, List<IEnumerable> - это жестоко. Попробуй что-то типа:
судя по всему, тут нужно что-то типа pager-а, ему не нужны проперти. а результат отдается ListView, тот тоже не требует строгой типизации. |