С jQuery я сделал это этот путь :
function checkKey(e){
switch (e.keyCode) {
case 40:
alert('down');
break;
case 38:
alert('up');
break;
case 37:
alert('left');
break;
case 39:
alert('right');
break;
default:
alert('???');
}
}
if ($.browser.mozilla) {
$(document).keypress (checkKey);
} else {
$(document).keydown (checkKey);
}
кроме того, попробуйте эти плагины, который похож, они делают всю эту работу для Вас:
http://www.openjs.com/scripts/events/keyboard_shortcuts
http://www.webappers.com/2008/07/31/bind-a-hot-key-combination-with-jquery-hotkeys/
Вы должны использовать расширение ToList:
var evenScores = scores.Where(i => i % 2 == 0).ToList();
var evenScores = scores.Where(i => i % 2 == 0).ToList();
Не работает?
Кстати, почему вы объявляете prettyPrint с таким конкретным типом для параметра scores, а не используете этот параметр только как IEnumerable (я предполагаю, что именно так вы реализовали метод расширения ForEach)? Так почему бы не изменить подпись prettyPrint и оставить эту ленивую оценку? =)
Как это:
Action<IEnumerable<int>, string> prettyPrint = (list, title) =>
{
Console.WriteLine("*** {0} ***", title);
list.ForEach(i => Console.WriteLine(i));
};
prettyPrint(scores.Where(i => i % 2 == 0), "Title");
Обновление:
Или вы можете избежать использования List.ForEach таким образом (не учитывайте неэффективность конкатенации строк):
var text = scores.Where(i => i % 2 == 0).Aggregate("Title", (text, score) => text + Environment.NewLine + score);