我有一个字符串列表: List<string> NameList = new List<string>()
名称列表包含以下项目:
John Doe,Tom Jones,Bob Sinclair
我想将这些项目投影到一个单独的连接字符串,如下所示:
isnull(piv.[John Doe],0) [John Doe],
isnull(piv.[Tom Jones],0) [Tom Jones],
isnull(piv.[Bob Sinclair],0) [Bob Sinclair]
Run Code Online (Sandbox Code Playgroud)
以上是一个SQL语句,将使用我正在制作的程序构建.我不需要执行SQL,只需将连接的名称列表以上述格式返回为字符串.
使用一点LINQ和$字符串插值运算符很容易做到这一点.试试这个:
var result = string.Join(
$",{Environment.NewLine}",
NameList.Select(x => $"isnull(piv.[{x}],0) [{x}]"));
Run Code Online (Sandbox Code Playgroud)
string.Join 将在每个元素之后将所有结果与逗号和换行符组合在一起.
NameList.Select 将每个元素投影到您需要的格式.
这是一个完全有效的例子.它创建了这个输出:
isnull(piv.[John Doe],0) [John Doe], isnull(piv.[Tom Jones],0) [Tom Jones], isnull(piv.[Bob Sinclair],0) [Bob Sinclair]
var output = String.Join(",\n", NameList.Select(n =>
string.Format("isnull(piv.[{0}],0) [{0}]", n)));
Run Code Online (Sandbox Code Playgroud)
String.Join将获取一个字符串列表,并将它们与您想要的任何分隔符连接在一起.String.Format只是通过替换n来格式化字符串{0}.所以,在我们列表中的每个字符串,我们使用Select来选择格式化字符串,然后我们加入该集合与,\n