我必须在表中加载组织数据,然后在包含如下标记的一百个字符串文本中替换它的数据:
< #PI_Name#>
从表中获取一次数据然后将相关数据替换为字符串标记的最佳方法是什么?
谢谢
答案 0 :(得分:0)
编辑:
重新阅读你的问题几次之后,我想我可能误解了你的要求,你不会问如何存储数据,以便它可以在多个地方被激活,你要求如何用数据替换字符串中的标签
在这种情况下,我建议建立一个标签词典
Dictionary<string,string> Tags;
string mask;
string output = mask;
foreach(var tag in tags)
{
output = output.Replace(tag.Key,tag.Value)
}
如果你不想;你想预先构建你的标签字典,你可以使用RegEx和Reflection来使用Regex来识别字符串中的标签,然后使用反射来查找与标签相同的属性
见RegEx 和Get property value from string using reflection in C#
注意你也可以使用MS的string.Format函数,但是你必须遵循MS标记规则,这些规则是未命名的位置和用户花括号,即string.Format(“({0},{1})”, 50,20)将返回“(50,20)”
最好的方法是创建一个支持您的数据需求的对象模型,一旦有了,您就可以正确定制对它的访问
MS's MVVM pattern give a good overview on the concept
但总的来说,它应该与此类似,创建一个数据模型,将数据存储在一个合理的庄园中,以便相关项目位于同一位置,然后让这些类管理数据,即将数据转换为数据库并解析任何复杂数据,例如您提到的字符串(您可能会为此层使用EntityFamework或其他代码生成器)
然后有你的业务层来管理数据,thos层处理飞蛾,验证,Undos和更改数据,业务层不需要是1:1,数据层你有业务模型管理多个对象或仅管理一部分
最后,您将拥有管理用户所看到内容以及用户如何与业务层交互的表示层
示例SUDO
Database Table {FirstName, Surname, DOB}
DataModel
{
String firstname;
String Surname;
dateTime DOB;
static DataModel Load(string name){}//read from DB
static DataModel Load(dateTime dob){}//read from DB
void Save(){}//write to DB
}
BusinessModel
{
DataModel orginalData
String FullName;
int Age;
bool IsValid;//validate changes ie that age as less than 100
void Reset(){}//undo changes and reset data to orginalData
string ValidateText(){}//Text explaining why is valid is false
void Save(){}//copy changes to DataModel and ask it to save to DB
//Events to inform GUI of data changes that need refreshing
}
答案 1 :(得分:0)
为您的组织表编写datatable属性。在那里,您可以设置表的值,并获取更改列的值。