我想将本书中的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#编写等效的代码,我真的很感激。
答案 0 :(得分:4)
%s
将替换为%
运算符后传递的元组中的相应值。
例如:
my_friends = [0, 2, 666, 123132]
print "select uid1 from friends where uid1 in (%s)" % (",".join(my_friends))
会打印出来:
从朋友那里选择uid1,其中uid1在(0,2,666,123132)
如上所述,您需要使用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)
它的工作方式与Python的字符串format()
方法非常相似(从Python 2.6开始提供)。
答案 1 :(得分:1)
%s
是字符串格式的替换占位符,在.NET中调用{0}...{1}
或类似函数时等同于String.Format()
等等。
答案 2 :(得分:1)
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上定义了几种不同的格式字符串。例如,有Numeric Format Strings和Date Format Strings。