то, что Вы ищете, называют Вес Hamming .
в Python 2.6/3.0 это может быть найдено скорее легко с:
bits = sum( b == '1' for b in bin(x)[2:] )
Если вы говорят о строке Where
(а не построении выражения и т. д. самостоятельно) - тогда Dynamic LINQ Library (в примерах 3.5, IIRC) должно хватить.
Обратите внимание, что приведенный ниже пример предназначен для использования базы данных; но вы можете использовать его с LINQ-to-Objects, вызвав .AsQueryable ()
для ваших данных в памяти.
На самом деле существует специальная библиотека от Microsoft ( System.Linq.Dynamic ), которая поставляется с примерами C # VS2008, которая поддерживает это. Получите ее здесь (загрузка Microsoft)
Библиотека включена в каталог \ LinqSamples \ DynamicQuery примеров загрузки выше.
Подробные примеры использования см. На этой странице: http: // weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
Также вы можете использовать деревья выражений для создания динамических запросов. См .:
http://msdn.microsoft.com/en-us/library/bb397951.aspx
http://www.interact-sw.co.uk/iangblog/2005/09/30/expressiontrees
http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx