Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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
Linq 如何根据列表长度将列表转换为字符串?_Linq - Fatal编程技术网

Linq 如何根据列表长度将列表转换为字符串?

Linq 如何根据列表长度将列表转换为字符串?,linq,Linq,对我来说,这是一个由来已久的问题,我一直希望能和林克一起解决 假设我有一个包含字母a-E的列表foo,我想构建一个串联字符串,如下所示: a&b&c&d&e 这可以构造整个列表,但在末尾有额外的“&” var myString = ""; foo.ForEach(x => myString += String.Format("{0} & ", x)); 我很想找到一个干净的单行解决方案来构建它(减去最后额外的concatanator,而不必编写扩展方法。将其更改为字符串[],然

对我来说,这是一个由来已久的问题,我一直希望能和林克一起解决

假设我有一个包含字母a-E的列表foo,我想构建一个串联字符串,如下所示:

a&b&c&d&e

这可以构造整个列表,但在末尾有额外的“&”

var myString = "";
foo.ForEach(x => myString += String.Format("{0} &  ", x));

我很想找到一个干净的单行解决方案来构建它(减去最后额外的concatanator,而不必编写扩展方法。

将其更改为
字符串[]
,然后
加入它怎么样

List<string> foo;
// ...
string joinedString = string.Join(" & ", foo.ToArray());

// or, as vc 74 pointed out below, in .NET 4+ you can do
string joinedString = string.Join(" & ", foo);
列出foo;
// ...
string joinedString=string.Join(“&”,foo.ToArray());
//或者,正如下面Vc74所指出的,在.NET4+中,您可以这样做
string joinedString=string.Join(“&”,foo);

将其更改为
字符串[]
然后
加入它怎么样

List<string> foo;
// ...
string joinedString = string.Join(" & ", foo.ToArray());

// or, as vc 74 pointed out below, in .NET 4+ you can do
string joinedString = string.Join(" & ", foo);
列出foo;
// ...
string joinedString=string.Join(“&”,foo.ToArray());
//或者,正如下面Vc74所指出的,在.NET4+中,您可以这样做
string joinedString=string.Join(“&”,foo);

LINQ可以使用Aggregate.String.Join做得更好,但是有评论说LINQ不能做这种事情,所以

    [TestMethod]
    public void TestAggregate()
    {
        List<string> input = new List<string>{"A", "B", "C"};
        string output = input.Aggregate((list, next) => list + " & " + next);
        Assert.AreEqual(output, "A & B & C");
    }
[TestMethod]
公共无效遗嘱集合()
{
列表输入=新列表{“A”、“B”、“C”};
字符串输出=输入.聚合((列表,下一个)=>list+“&”+next);
资产净值(产出“A&B&C”);
}

LINQ可以使用Aggregate.String.Join做得更好,但是有评论说LINQ不能做这种事情,所以

    [TestMethod]
    public void TestAggregate()
    {
        List<string> input = new List<string>{"A", "B", "C"};
        string output = input.Aggregate((list, next) => list + " & " + next);
        Assert.AreEqual(output, "A & B & C");
    }
[TestMethod]
公共无效遗嘱集合()
{
列表输入=新列表{“A”、“B”、“C”};
字符串输出=输入.聚合((列表,下一个)=>list+“&”+next);
资产净值(产出“A&B&C”);
}

string.Join有一个重载,它从.net 4string开始接受IEnumerable。在纯Linq中,Join有一个重载,它从.net 4string开始接受IEnumerable。在纯Linq中,你不能。Linq的目标是返回数据集,而不是将其展平。你必须使用经典的联接方法。在纯Linq中,你不能。Linq的目标是返回数据集,而不是把它展平。你必须使用经典的连接方法。哦,天哪。但愿我早就知道这件事。是的,有各种各样的整洁的东西,似乎没有人知道。我做了8年的开发人员,大约一年前才知道。哦,天哪。但愿我早就知道这件事。是的,有各种整洁的东西,似乎没有人知道我已经做了8年的开发人员,大约一年前才知道这一点。