一个对象在linq查询中只能实例化一次吗

本文关键字:一次 实例化 linq 查询 一个对象 | 更新日期: 2023-09-27 18:28:35

我必须写一个C#脚本,我必须担心三件事:性能、字符数和行数(只允许使用一个分号)。我需要连接一个字符串列表,这是我目前的方法(为了可读性,对代码片段进行了轻微修改,更改了变量名称并添加了空格):

//note: stringList is of type List<string>
var builder = new StringBuilder();
string result = (from str in stringList select builder.Append("&q=" + str)).ToString();

问题是它有两条线,所以它不起作用。有没有一种方法可以在LINQ查询中实例化字符串生成器?

此外,与简单的foreach循环相比,这个查询的性能有多好?(我知道foreach不是一个选项,我只是要求将来参考)

一个对象在linq查询中只能实例化一次吗

你担心"预优化",不要提前想得太多。

就您的查询而言,这是正确的方法:

var result = "&q" + String.Join("&q=", stringList);

如果您想使用StringBuilder:,这是一个不错的选择

string result =
    stringList
        .Aggregate(new StringBuilder(), (sb, s) => sb.Append("&q=" + s))
        .ToString();

简单的答案是:

string result = String.Join("", stringList.Select(s => "&q=" + s));

您根本不需要StringBuilder,这是对代码的一行替换:

string result = string.Join("", from str in stringList select "&q=" + str));