C# 字符串联接列表和项目

C# 字符串联接列表和项目,c#,string,C#,String,我需要连接字符串和列表项。我的代码 List<string> list = new List<string>() { "item1", "item2" }; string item3 = "item3"; string result = string.Join(",", list, item3); 而非预期 //item1,item2,item3 什么是最优雅的方法来解决这个问题?可以有多个列表和多个字符串,每个字符串都可以为空。您可以使用Concat(不更改原始

我需要连接字符串和
列表
项。我的代码

List<string> list = new List<string>() { "item1", "item2" };
string item3 = "item3";

string result = string.Join(",", list, item3); 
而非预期

//item1,item2,item3

什么是最优雅的方法来解决这个问题?可以有多个
列表
和多个
字符串
,每个字符串都可以为空。

您可以使用
Concat
(不更改原始列表!)和
连接可枚举的所有字符串:

List<string> list = new List<string>() { "item1", "item2" };
string item3 = "item3";

string result = string.Join(",", list.Concat(new string[] { item3 }));
// result = item1,item2,item3
List List=newlist(){“item1”,“item2”};
字符串item3=“item3”;
字符串结果=string.Join(“,”,list.Concat(新字符串[]{item3}));
//结果=项目1、项目2、项目3

当前代码的问题是它调用
string.Join(string,params IEnumerable)
:它将
list
视为一个对象,而不是对象列表。

您可以使用
Concat
(不更改原始列表!)和
Join
连接所有可枚举的字符串:

List<string> list = new List<string>() { "item1", "item2" };
string item3 = "item3";

string result = string.Join(",", list.Concat(new string[] { item3 }));
// result = item1,item2,item3
List List=newlist(){“item1”,“item2”};
字符串item3=“item3”;
字符串结果=string.Join(“,”,list.Concat(新字符串[]{item3}));
//结果=项目1、项目2、项目3

当前代码的问题在于它调用了
string.Join(string,params IEnumerable)
:它将
列表
视为一个对象,而不是对象列表。

如果最终结果需要是一个
字符串
,则可以使用类似的方法。这将首先将
列表
合并为单个
字符串
,然后将其与
项目3
合并:

string result = string.Join (",", string.Join (",", list), item3);

对于每个额外的
列表
,您可以添加额外的
string.Join(“,”,otherList)
子句。

如果最终结果需要是单个
字符串
,则可以使用类似的语句。这将首先将
列表
合并为单个
字符串
,然后将其与
项目3
合并:

string result = string.Join (",", string.Join (",", list), item3);
对于每个额外的
列表
可以添加额外的
string.Join(“,”,otherList)
子句。

怎么样

string result = string.Join(",", list.Concat(new string[1] { item3 }));
怎么样

string result = string.Join(",", list.Concat(new string[1] { item3 }));
您可以这样做:

        List<string> list = new List<string>() { "item1", "item2" };
        string item3 = "item3";

        list.Add(item3);
        //This will result to "item1, item2, item3
        string result = String.Join(",", list.ToArray());

        //If you don't want to change the list without adding anything on it:         
        string result = String.Join(", ", list.ToArray()) + ", " + item3;
List List=newlist(){“item1”,“item2”};
字符串item3=“item3”;
增加(第3项);
//这将导致“项目1、项目2、项目3
字符串结果=string.Join(“,”,list.ToArray());
//如果不想在不添加任何内容的情况下更改列表:
字符串结果=string.Join(“,”,list.ToArray())+“,”+项3;
您可以执行以下操作:

        List<string> list = new List<string>() { "item1", "item2" };
        string item3 = "item3";

        list.Add(item3);
        //This will result to "item1, item2, item3
        string result = String.Join(",", list.ToArray());

        //If you don't want to change the list without adding anything on it:         
        string result = String.Join(", ", list.ToArray()) + ", " + item3;
List List=newlist(){“item1”,“item2”};
字符串item3=“item3”;
增加(第3项);
//这将导致“项目1、项目2、项目3
字符串结果=string.Join(“,”,list.ToArray());
//如果不想在不添加任何内容的情况下更改列表:
字符串结果=string.Join(“,”,list.ToArray())+“,”+项3;

您需要将所有列表和单个值合并到一个列表中。一种方法是使用一个方法,该方法接受任意数量的参数,检查其类型,并输出一个串联列表

List<string> list = new List<string>() { "item1", "item2" };
string item3 = "item3";
List<string> list2 = new List<string>() { "item4", "item5" };
string item6 = "item6";

string result = string.Join(",", GetConcatenatedValues(list, item3, list2, item6));

public List<string> GetConcatenatedValues(params object[] args)
{
    List<string> results = new List<string>();
    foreach (var entry in args
    {
        if (entry is List<string>)
            results.AddRange(entry as List<string>);
        else
            results.Add(entry.ToString());
    }
    return results;
}
List List=newlist(){“item1”,“item2”};
字符串item3=“item3”;
List list2=新列表(){“item4”,“item5”};
string item6=“item6”;
string result=string.Join(“,”,GetConcatenatedValues(list,item3,list2,item6));
公共列表GetConcatenatedValues(参数对象[]args)
{
列表结果=新列表();
foreach(args中的var条目
{
如果(条目为列表)
结果.添加范围(以列表形式输入);
其他的
results.Add(entry.ToString());
}
返回结果;
}

您需要将所有列表和单个值合并到一个列表中。一种方法是使用一个方法,该方法接受任意数量的参数,检查其类型,并输出一个串联列表

List<string> list = new List<string>() { "item1", "item2" };
string item3 = "item3";
List<string> list2 = new List<string>() { "item4", "item5" };
string item6 = "item6";

string result = string.Join(",", GetConcatenatedValues(list, item3, list2, item6));

public List<string> GetConcatenatedValues(params object[] args)
{
    List<string> results = new List<string>();
    foreach (var entry in args
    {
        if (entry is List<string>)
            results.AddRange(entry as List<string>);
        else
            results.Add(entry.ToString());
    }
    return results;
}
List List=newlist(){“item1”,“item2”};
字符串item3=“item3”;
List list2=新列表(){“item4”,“item5”};
string item6=“item6”;
string result=string.Join(“,”,GetConcatenatedValues(list,item3,list2,item6));
公共列表GetConcatenatedValues(参数对象[]args)
{
列表结果=新列表();
foreach(args中的var条目
{
如果(条目为列表)
结果.添加范围(以列表形式输入);
其他的
results.Add(entry.ToString());
}
返回结果;
}
试试这个:

List<string> list = new List<string>() { "item1", "item2" };

string item3 = "item3";

list.Add(item3);

string result = string.Join(",",list);

//result will have: item1,item2,item3
List List=newlist(){“item1”,“item2”};
字符串item3=“item3”;
增加(第3项);
字符串结果=string.Join(“,”列表);
//结果将有:项1、项2、项3
试试这个:

List<string> list = new List<string>() { "item1", "item2" };

string item3 = "item3";

list.Add(item3);

string result = string.Join(",",list);

//result will have: item1,item2,item3
List List=newlist(){“item1”,“item2”};
字符串item3=“item3”;
增加(第3项);
字符串结果=string.Join(“,”列表);
//结果将有:项目1、项目2、项目3

可以有多个
列表
然后连接这些列表。也可以有多个
列表
然后连接这些列表。您可以通过返回
IEnumerable
来改进代码(使用
产生返回
)检查
IEnumerable
而不是
List
。除此之外:很好的解决方案!同意。这可能是一个需要改进的地方。我会让其他人来决定,他们是否愿意这样做:)你可以通过返回
IEnumerable
来改进代码(使用
产生返回
)检查
IEnumerable
而不是
List
。除此之外:很好的解决方案!同意。这可能是一个需要改进的地方。我会让其他人来决定,他们是否想这样做:)@patrickhoffman它做的正是所需的:获取字符串列表,在末尾添加另一个字符串,然后生成所有这些字符串的逗号分隔字符串。为什么不向OP解释呢?@PatrickHofman它完全按照要求执行:获取字符串列表,在末尾添加另一个字符串,然后生成所有这些字符串的逗号分隔字符串。为什么不向OP解释?