Как преобразовать результаты запроса в строку c # - PullRequest
1 голос
/ 24 июня 2011

Я храню 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 ]

1 голос
/ 24 июня 2011

Если я правильно понял вопрос, ваш 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("<"));
}

Это код свободной руки, поэтому вам, возможно, придется немного изменить его, я думаю, что концепция ясна. НТН

1 голос
/ 24 июня 2011
string results = someStoredProcCall();
results = Regex.Replace(results, @"result [0-9]+: ", "");
0 голосов
/ 24 июня 2011

Вы можете использовать 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);
0 голосов
/ 24 июня 2011

В хранимой процедуре 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
...