Join list of string to comma separated and enclosed in single quotes

后端 未结 6 1160
旧时难觅i
旧时难觅i 2021-02-03 19:41
List test = new List();
test.Add(\"test\'s\");
test.Add(\"test\");
test.Add(\"test\'s more\");
string s = string.Format(\"\'{0}\'\", string.J         


        
相关标签:
6条回答
  • 2021-02-03 19:45

    This should work:

    List<string> test = new List<string>(); 
    test.Add("test's"); 
    test.Add("test"); 
    test.Add("test's more");
    string s = string.Join("','", test.Select(i => i.Replace("'", "''")));
    

    And if you're really looking to enclose the whole thing in single quotes:

    string s = string.Format("'{0}'", string.Join("','", test.Select(i => i.Replace("'", "''"))));
    
    0 讨论(0)
  • 2021-02-03 19:46

    I like a version without Replace:

    using System.Linq;
    (...)
    string s = String.Join(", ", from l in MyList select String.Format("'{0}'", l));
    
    0 讨论(0)
  • 2021-02-03 19:50

    You can always encode quotes before you build your string.

    0 讨论(0)
  • 2021-02-03 19:57

    Try this:

    string s = string.Join(",", test.Select(x => string.Format("'{0}'", x.Replace("'", "''"))));
    

    By the way, there's no apostrophe in "tests" - apostrophes aren't used for plurals.

    0 讨论(0)
  • 2021-02-03 20:02

    This may be easier than using string.replace

    string s = "'" + String.Join("','", test) + "'";
    
    0 讨论(0)
  • 2021-02-03 20:08

    It isn't to everyone's taste, but I like to create helper extensions for these kinds of tasks, and put them into a "utility" namespace:

    public static class ListExtensions
    {
       public static void AddDoubleQuoted(this List<string> list, string input)
       {
         input = input.Replace("'", "''");
         list.Add(input);
       }
    }
    
    List<string> test = new List<string>();
    test.AddDoubleQuoted("test's");
    test.AddDoubleQuoted("test");
    test.AddDoubleQuoted("test's more");
    string s = string.Format("'{0}'", string.Join("','", test));
    
    0 讨论(0)
提交回复
热议问题