Chcę zastąpić wartości tekstu z pobieraniem danych (DataSet) z bazy danych na podstawie nazwy kolumny, przykład:

SQL:

SELECT Fullname, Age FROM User

Mam tekst:

Hello my name is <<Fullname>> and my age is <<Age>>

Wynik:

Hello my name is Alvin and my age is 18

SQL:

SELECT Lastname, Feeling FROM User

Mam tekst:

Hello my name is <<Lastname>> and I am <<Feeling>>

Wynik:

Hello my name is Lee and I am Happy
0
Alvin 17 luty 2017, 12:29

2 odpowiedzi

Najlepsza odpowiedź

Jednym z doskonałych rozwiązań otwartych źródłowych, które ostatnio używane jest Dotliquid

Proszę odnieść się do tego Pytanie gdzie szczegółowo, co zrobiłem, aby zacząć, a także sprawdzić Doskonała odpowiedź Tima

Możesz wykonać zapytanie, skonstruować POCO i użyj tego, aby wypełnić szablon. Możesz przeczytać tekst szablonu z dowolnego miejsca - pliku, kolumny bazy danych, serwisu internetowego itp.

Jako trudny pomysł na to, jak pójdziesz na to:

public class PersonTemplateInfo : Drop
{
    public string Name { get; set; }
    public string Feeling { get; set; }
}

A następnie użyj tego w następujący sposób:

// Code to read templateText here

Template.NamingConvention = new CSharpNamingConvention();
Template template = Template.Parse(templateText);

// Code to read values

PersonTemplateInfo personTemplateInfo = new PersonTemplateInfo
{
    Name = name,
    Feeling = feeling
};

string parsedText = template.Render(Hash.FromAnonymousObject(new {personTemplateInfo = personTemplateInfo }));
0
Community 23 maj 2017, 12:17

Jak rozumiem, poniżej kodu wygląda na to, czego potrzebujesz. Po prostu wpisuję się bezpośrednio tutaj, po prostu dostaniesz pomysł i poprawić go, jeśli poczujesz się jego przydatny.

   SqlCeDataAdapter da = new SqlCeDataAdapter();
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();

        da.SelectCommand = new SqlCommand(@"SELECT Fullname, Age,Lastname, Feeling,OtherProperties FROM User", connString);
        da.Fill(ds, "User");
        dt = ds.Tables["User"];

        var resultText = "Hello, ";
        var textDic = new Dictionary<string,string>(){
           {"Fullname","And My name is {0}"},
           {"Age","And My age is {0}"},
           {"LastName","And my name is {0}"},
           {"Felling","And I am  {0}"}, 
           {"OtherProperties","And whatever  {0}"}, 
         };

         foreach (DataRow row in dt.Rows)
        {
            foreach (DataColumn column in dt.Columns)
            {
                ColumnName = column.ColumnName;
                ColumnData = row[column].ToString();
                if(textDic.ContainsKey(ColumnName))
                {
                    resultText+= string.Format(textDic[ColumnName],ColumnData)
                }
            }
        }

// your final result is this resultText
0
Chris Phan 17 luty 2017, 10:17