C# 如何将查询结果转换为字符串c

C# 如何将查询结果转换为字符串c,c#,asp.net,sql,string-formatting,C#,Asp.net,Sql,String Formatting,我将HTML存储在一个varcharmax字段中。在一个数据集中可以返回许多这样的字段,我需要将它们转换成一个字符串,这样我就可以将它们添加到我的控件中。有什么想法吗 比如说 result 1: <h5> This is a result </h5> result 2: <h5> This is a result </h5> result 3: <h5> This is a result </h5> result 4:

我将HTML存储在一个varcharmax字段中。在一个数据集中可以返回许多这样的字段,我需要将它们转换成一个字符串,这样我就可以将它们添加到我的控件中。有什么想法吗

比如说

result 1: <h5> This is a result  </h5>
result 2: <h5> This is a result  </h5>
result 3: <h5> This is a result  </h5>
result 4: <h5> This is a result  </h5>
我需要将结果集解析为如下字符串:

<h5> This is a result  </h5>
<h5> This is a result  </h5>
<h5> This is a result  </h5>
<h5> This is a result  </h5>

我将从存储过程返回结果,因为我将只允许用户执行存储过程,并且在SQL存储过程中,他们没有任何表权限。您可以执行以下操作

DECLARE @PartHTML VARCHAR(MAX)
DECLARE @FullHTML VARCHAR(MAX)

DECLARE CURSOR HTMLCursor FOR (SELECT FieldWithHTML FROM TableWithHTML)
OPEN CURSOR HTMLCursor

FETCH NEXT FROM HTMLCursor INTO @PartHTML

While (@@FETCH_STATUS <> -1)
BEGIN
    SET @FullHTML = @FullHTML + @PartHTML + CHAR(13)
    FETCH NEXT FROM HTMLCursor INTO @PartHTML

END
CLOSE HTMLCursor
DEALLOCATE HTMLCursor
您可以使用LINQ:

string[] results = ...
string resultsStr = results.Aggregate((a,b) => a + b);
或者


如果我理解正确,您的HTML将在数据库中,并且需要在控件中呈现?如果是,我将设置一个文本控件,并在加载数据时设置文本的属性以呈现存储的HTML结果

StringBuilder sb = new StringBuilder();
for(int i = 0; i < dsResults.Tables[0].Rows.Count - 1; i++)
{
    sb.Append(PrepareResult(dsResults.Tables[0].Rows[i][0].ToString()));
}

litControl.Text = sb.ToString();


public string PrepareResult(string result)
{
    return result.Substring(result.IndexOf("<"));
}

这是免费的代码,所以您可能需要稍微调整一下,我认为概念很清楚。HTH

您在后端使用的是哪一个过程?换句话说:您有x个字符串,并且希望它们是一致的?如果是这样,那么stringbuilder呢?我真的不明白这个问题。我认为语法在妨碍它。这里也是。我无法理解这个问题……字符串是不可变的,所以每次循环迭代时,这段代码都会继续分配一组新的内存。@Ben Robinson-这样更好吗:我认为它回答了这个问题,你不这样认为吗?谢谢你指出这一点。如果我理解正确的话,结果x不会被返回,这仅仅是他如何标记返回的行。@Cyberherbalist可能是这样的。我不太明白他到底在问什么,显然其他人也不知道,但我就是这么解释的。
MyEntity[] results = ...
string resultsStr = results.Select(r => r.SomeColumn).Aggregate((a,b) => a + b);
StringBuilder sb = new StringBuilder();
for(int i = 0; i < dsResults.Tables[0].Rows.Count - 1; i++)
{
    sb.Append(PrepareResult(dsResults.Tables[0].Rows[i][0].ToString()));
}

litControl.Text = sb.ToString();


public string PrepareResult(string result)
{
    return result.Substring(result.IndexOf("<"));
}