Классы проблемы, которые хорошо подходят для решения для стиля mapreduce, являются проблемами агрегирования. Из извлечения данных из набора данных. В C# можно было использовать в своих интересах LINQ к программе в этом стиле.
От следующей статьи: http://codecube.net/2009/02/mapreduce-in-c-using-linq/
метод GroupBy действует как карта, в то время как Избранный метод делает задание сокращения промежуточных результатов в заключительный список результатов.
var wordOccurrences = words
.GroupBy(w => w)
.Select(intermediate => new
{
Word = intermediate.Key,
Frequency = intermediate.Sum(w => 1)
})
.Where(w => w.Frequency > 10)
.OrderBy(w => w.Frequency);
Для распределенной части, Вы могли проверить DryadLINQ: http://research.microsoft.com/en-us/projects/dryadlinq/default.aspx
Обновление: см., Пожалуйста, наиболее проголосовавший ответ
Мой собственный в настоящее время устарел. Сохраняется здесь только по историческим причинам.
Distinct в HQL обычно требуется в Joins, а не в простых примерах, таких как ваш собственный.
См. Также Как создать Distinct запрос в HQL