Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C#列表中的字符串部分创建逗号分隔的字符串_C# - Fatal编程技术网

从C#列表中的字符串部分创建逗号分隔的字符串

从C#列表中的字符串部分创建逗号分隔的字符串,c#,C#,我有一个C#列表,我想创建一个逗号分隔的字符串。我在上找到了其他答案,可以解决这个问题,但在我的特殊情况下,我只想使用列表中的一部分值来创建字符串 如果我的列表包含以下值: “福” “酒吧” “汽车” 我想创建一个字符串 Foo, Bar and Car. 我可以使用以下代码: string.Format("{0} and {1}.", string.Join(", ", myList.Take(myList.Count - 1)),

我有一个C#列表,我想创建一个逗号分隔的字符串。我在上找到了其他答案,可以解决这个问题,但在我的特殊情况下,我只想使用列表中的一部分值来创建字符串

如果我的列表包含以下值:

“福” “酒吧” “汽车”

我想创建一个字符串

Foo, Bar and Car.
我可以使用以下代码:

string.Format("{0} and {1}.", 
              string.Join(", ", myList.Take(myList.Count - 1)), 
              myList.Last());
然而,我的列表实际上是由jSON值组成的,如下所示

{ Name = "Foo" }
{ Name = "Bar" }
{ Name = "Car" }
因此,上述代码导致:

{ Name = "Foo" }, { Name = "Bar" } and { Name = "Car" }.
如何构造字符串,以便仅使用列表中的
Foo
Bar
Car

更新

多亏了@StevePy,这就是我的结局:

string.Format("{0} and {1}.", 
              string.Join(", ", myList.Select(x => x.Name).ToList().Take(myList.Count - 1)), 
              myList.Select(x => x.Name).ToList().Last());
林克应该有所帮助

var nameList = myList.Select(x=>x.Name).ToList();

您可以使用
jsonvert.toString
获取列表项的值,或者如果您使用json序列化,则可以使用jsonvert.Deserialization

如果您需要使用字符串进行操作,只需获取每个字符串的必要部分,例如,使用和方法:

List myList=新列表{
“{Name=\'Foo\'}”,
“{Name=\'Bar\'}”,
{Name=\'Car\'}
};
var temp=myList.Select(x=>
{
int index=x.IndexOf(“\”)+1;
返回x.Substring(index,x.LastIndexOf(“\”)-index);
})
.ToList();
string result=string.Format(“{0}和{1}”,
string.Join(“,”,temp.Take(myList.Count-1)),
最后温度();

我构建了一种方法,可以为您实现这一点:

static string ConvertToMyStyle(List<string> input)
{
    string result = "";

    foreach(string item in input)
    {
        if(input.IndexOf(item) != input.ToArray().Length-1)
            result += item + ", ";
        else
            result += "and " + item + ".";
    }
    return result;
}
静态字符串转换器TomyStyle(列表输入)
{
字符串结果=”;
foreach(输入中的字符串项)
{
if(input.IndexOf(item)!=input.ToArray().Length-1)
结果+=项目+“,”;
其他的
结果+=”和“+项目+”;
}
返回结果;
}

这将处理单个项目的情况

protected string FormatWithOxfordCommas(List<string> reasons)
        {
            string result = "";
            if (reasons.Count == 1)
                result += reasons[0];
            else
            {
                foreach (string item in reasons)
                {
                    if (reasons.IndexOf(item) != reasons.Count - 1)
                        result += item + ", ";
                    else
                        result += "and " + item + ".";
                }
            }
            return result;
        }
带OxfordCommas的受保护字符串格式(列出原因)
{
字符串结果=”;
如果(reasons.Count==1)
结果+=原因[0];
其他的
{
foreach(原因中的字符串项)
{
if(reasons.IndexOf(item)!=reasons.Count-1)
结果+=项目+“,”;
其他的
结果+=”和“+项目+”;
}
}
返回结果;
}

您的列表是一个列表,并且每个字符串的类型为“{Name=“Foo”}”吗?那么您需要的实际输出是什么?您会在json响应中包含
吗?您可能想看看这一点:您可以使用
myList.last().Name
对最后一项的解决方案进行一些优化,以避免重新列出这些项。或者可能更好一点:
myList[myList.Count-1]。Name
不是suscinct,但我认为。Last()仍然会在整个集合上迭代。您可能会提供一些代码示例,让它值得作为答案吗?
protected string FormatWithOxfordCommas(List<string> reasons)
        {
            string result = "";
            if (reasons.Count == 1)
                result += reasons[0];
            else
            {
                foreach (string item in reasons)
                {
                    if (reasons.IndexOf(item) != reasons.Count - 1)
                        result += item + ", ";
                    else
                        result += "and " + item + ".";
                }
            }
            return result;
        }