2017-02-17 1 views
0

に基づいてデータのダイナミックでテキスト値を置き換えます私は、列名、例に基づいて、データベースからのデータは、(データセット)を取得したテキストの値を置き換えたい列

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

結果:

​​ 私はテキストを持っています

SQL:

SELECT Lastname, Feeling FROM User 

私はテキストがあります。

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

結果:私は最近使用

Hello my name is Lee and I am Happy 
+0

クエリ、データおよび列名が異なると – apomene

+0

上の機能を置き換える使用しますが、限り、あなたはドントとしてデータベース – Alvin

+0

動的である文字列 –

答えて

0

一つの優れたオープンソースのソリューションはdotliquid

あるご参照くださいこれまでquestion wh私が始めたことを詳しく説明し、またTimの優れた答えをチェックしてください。

あなたの質問を実行し、POCOを構築し、それを使ってあなたのテンプレートを移入することができます。あなたはどこからでもテンプレートテキストを読むことができます - あなたはそれについて移動したいかの目安として、ファイル、データベース列、ウェブサービスなど

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

そして、としてそれを使用します次のようになります:

// 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

これは単なる答えではありませんか? – HimBromBeere

+0

置き換えるものを定義できない場合はどうなりますか?テンプレートの列名を列の値に置き換えます。 – Alvin

+0

正確には、既知の点から始めなければならないので、テンプレートを読み込んで、sigilsを変更して置き換えてください。それはあなたのために働くのですか? – noonand

0

私が理解しているように、以下のコードは必要なもののように見えます。私はちょうどここに直接入力するので、あなたはそのアイデアを得て、それが役に立つと感じたら修正します。

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

置き換えるものを定義できない場合はどうなりますか?テンプレートの列名を列の値に置き換えます。 – Alvin

関連する問題