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

时间:2011-06-24 15:04:00

标签: c# asp.net sql string-formatting

我将HTML存储在varchar(max)字段中,在数据集中可能会返回许多这些字段,我需要将它们基本连接成一个字符串,以便我可以将它们添加到我的控件中吗?

所以例如

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>

我从存储过程返回结果,因为我将允许用户只执行存储过程,并且它们没有任何表权限

4 个答案:

答案 0 :(得分:1)

string results = someStoredProcCall();
results = Regex.Replace(results, @"result [0-9]+: ", "");

答案 1 :(得分:1)

如果我正确理解了这个问题,你的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

答案 2 :(得分:0)

在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

答案 3 :(得分:0)

您可以使用LINQ:

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

...或

MyEntity[] results = ...
string resultsStr = results.Select(r => r.SomeColumn).Aggregate((a,b) => a + b);