Перевести код Python на C # эквивалент - PullRequest
2 голосов
/ 27 января 2012

Я хотел бы переписать пример кода на python из книги в эквивалент C #, чтобы проверить его функциональность.

Код следующий:

q = "select target_id from connection where source_id=me() and target_type='user'"
my_friends = [str(t['target_id']) for t in fql.query(q)]

q = "select uid1, uid2 from friends where uid1 in (%s) and iud2 in (%s)" %
    (",".join(my_friends), ",".join(my_friends),)
mutual_friendships = fql(q)

Что я не знаю, так это знак %s и что означает (%s) в коде. Буду очень признателен, если кто-нибудь сможет написать эквивалентный код на C #.

Ответы [ 3 ]

4 голосов
/ 27 января 2012

Операция форматирования строки в Python

%s заменены соответствующими значениями из кортежа, переданного после оператора %.

Как это работает в Python

Например, это:

my_friends = [0, 2, 666, 123132]
print "select uid1 from friends where uid1 in (%s)" % (",".join(my_friends))

напечатает это:

выберите uid1 из друзей, где uid1 in (0,2,666,123132)

Как заменить его на C #

Вам необходимо использовать String.Format(), как указано, например. здесь: http://blog.stevex.net/string-formatting-in-csharp/

string formatString = "select uid1, uid2 from friends where uid1 in ({0}) and iud2 in ({1})"
string q = String.Format(formatString, yourReplacement1, yourReplacement2)

Он работает так же, как метод строки format() в Python (доступен с Python 2.6).

1 голос
/ 27 января 2012

Оформить строка. Формат :

string.Format("select uid1, uid2 from friends where uid1 in ({0}) and iud2 in ({1})",
              <value for {0}>, 
              <value for {1}>);

%s будет переводиться в {0}...{N} для любых строковых значений. %d и др. Также будут представлены в синтаксисе {0}...{N}, но в MSDN определено несколько различных строк формата. Например, есть строки числового формата и строки формата даты .

1 голос
/ 27 января 2012

%s являются замещающими заполнителями для форматирования строк, которые будут эквивалентны {0}...{1} и т. Д. При вызове String.Format() или аналогичной функции в .NET.

...