将字符串列表投影到SQL语句列表中

Sam*_*Sam 2 c#

我有一个字符串列表: 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,只需将连接的名称列表以上述格式返回为字符串.

Nat*_*ini 8

使用一点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]


Mat*_*and 5

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