我将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>
我从存储过程返回结果,因为我将允许用户只执行存储过程,并且它们没有任何表权限
答案 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);