Значение подстроки, полученное из базы данных в .NET / C # - PullRequest
3 голосов
/ 16 мая 2011

Я использую следующее для считывания значений из моей базы данных:

    while (reader.Read())
    {
        newsLabel.Text += "<div style='float:left;'>" + reader["body"] + "</div>";
    }

Мне было интересно. Как мне уменьшить значение «body» до 0,20 символов?

Можно ли использовать функцию подстроки?

Большое спасибо

Ответы [ 6 ]

4 голосов
/ 16 мая 2011

Предполагая, что столбец body содержит строку, вы можете обрезать ее следующим образом:

var body = (String) reader["body"];
var truncatedBody = body.Substring(0, Math.Min(body.Length, 20));

Если столбец может быть null, вам необходимо проверить это перед вызовом Substring.

Substring сгенерирует исключение , если запрошенная длина подстроки превышает длину фактической строки. Вот почему вы должны использовать минимум длины строки и желаемой длины подстроки.

Если вы делаете это много, вы можете создать метод расширения:

public static class StringExtensions {

  public static String Truncate(this String str, Int32 length) {
    if (length < 0)
      throw new ArgumentOutOfRangeException("length");
    if (str == null)
      return String.Empty;
    return str.Substring(0, Math.Min(str.Length, length));
  }

}

Вы можете использовать это так:

((String) reader["body"]).Truncate(20)
2 голосов
/ 16 мая 2011

Вы можете сделать это, как показано ниже.Обязательно проверьте наличие DbNull.

while (reader.Read()) 
        {
            string body = reader["body"] is DBNull ? "" : Convert.ToString(reader["body"]);

            if(body.Length > 20)
              body = body .Substring(0, 20);

            newsLabel.Text += "<div style='float:left;'>" + body  + "</div>";   
        }
1 голос
/ 16 мая 2011

В дополнение ко всем ответам здесь вы также можете отправить эту подстроку обратно в базу данных - так как в SQL есть функция SubString.

например. если вы использовали Linq 2 Sql, то метод c # SubString может быть переведен обратно в операцию SQL в базе данных - http://weblogs.asp.net/dixin/archive/2010/04/15/understanding-linq-to-sql-4-data-retrieving-via-query-methods.aspx

Является ли это оптимальным или необходимым, зависит от вашего приложения и базы данных.

Надеюсь, что поможет

Stuart

1 голос
/ 16 мая 2011
reader["body"].ToString().Substring(0,20);
1 голос
/ 16 мая 2011

да, вы можете сделать это в Substring в C #

newsLabel.Text += "<div style='float:left;'>" + Convert.ToString( reader["body"]).SubString(0,20) + "</div>";

читать MSDN Link

0 голосов
/ 16 мая 2011
while(reader.Read()) 
{
    string readBody = reader["body"] as string;
    if(!string.IsNullOrEmpty(readBody))
    {
        if(readBody.Length > 20)
           newsLabel.Text = string.Format("{0}<div style='float:left;'>{1}</div>",
                                     newsLabel.Text, readBody.Substring(0,20));
        else
           newsLabel.Text = string.Format("{0}<div style='float:left'>{1}</div>",
                                     newsLabel.Text, readBody);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...