Есть такой код:
private static Row GetRow( Worksheet worksheet, uint rowIndex )
{
return worksheet.GetFirstChild<SheetData>().
Elements<Row>().Where( r => r.RowIndex == rowIndex ).First();
}
Что бы мне его лучше понять я его раскладываю так:
SheetData sheetData = worksheet.GetFirstChild<SheetData>();
Row row = sheetData.Elements<Row>().Where( r => r.RowIndex == rowIndex ).First();
Но кто мне подскажет как я могу написать выражение:
...Where( r => r.RowIndex == rowIndex ).First();
Без лямбды? Это вообще возможно, ведь раньше как то это делали? Я не против лямбд, просто хочу разобраться.
Когда-то давно, во времена C# 1.0, использовали обычные делегаты. Без поддержки замыканий на уровне языка было тяжело, и приходилось писать что-то вроде:
class RowIndexFilter
{
public RowIndexFilter(rowIndex)
{
this.RowIndex = rowIndex;
}
int RowIndex;
public bool Filter(Row r)
{
return r.RowIndex == this.RowIndex;
}
}
// объявлен где-то рядом с Where
delegate bool RowFilter(Row r);
//
....Where(new RowFilter(
new RowIndexFilter(rowIndex).Filter
)
).First();
C# 2.0 принес с собой вывод типа делегата. Теперь код окончательного вызова чуть сократился
//
....Where(new RowIndexFilter(rowIndex).Filter).First();
Но кроме того, C# 2.0 принес с собой анонимные методы и механизм замыканий. Компилятор научился генерировать классы-обертки сам, весь код стал выглядеть вот так:
...Where(delegate(Row r) { return r.RowIndex == rowIndex; } ).First();
Этот синтаксис появился в 2005-ом году.
Лямбды, добавленные в C# 3.0, не сильно его сократили. Основная фишка лямбд - это возможность компилировать их как в анонимные методы, так и в деревья выражений. А вовсе не для экономии на слове delegate :)
Пока писал сам понял сори за тупняк:
Row row;
foreach(Row currow in sheetData.Elements<Row>() )
{
if( currow.RowIndex == rowIndex )
{
row = currow;
break;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
ЗдравствуйтеЕсть такая ссылка по моему вопросу: ссылка (свойство ElementStyle)
Столкнулся с проблемойНа ПК версии сайта (Широкий экран) при загрузке страницы карусель отображается нормально