获取表格数据并在多个地方使用
本文关键字:方使用 表格 数据 获取 | 更新日期: 2023-09-27 17:58:52
我必须在一个表中加载一个组织数据,然后将其数据替换为包含以下标记的一百个字符串文本: <#PI_Name#>
从表中一次性获取数据,然后将相关数据替换为字符串标记的最佳方法是什么?
感谢
编辑:
重读你的问题几次后,我想我可能误解了你的要求,你没有问如何存储数据,以便可以在多个地方访问你问如何用数据替换字符串中的标签
在这种情况下,我建议建立一个标签字典
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并使用C#中的反射从字符串中获取属性值
注意,您也可以使用MS的字符串。格式化函数,但您必须遵循MS标记规则,这些规则是位置不命名和用户大括号(即字符串)。格式("({0},{1})",50,20)将返回"(50,20
最好的方法是创建一个支持你的数据需求的对象模型,一旦你有了它,你就可以正确地调整你对它的访问
MS的MVVM模式很好地概括了的概念
但总的来说,它应该与此类似,创建一个数据模型,将数据存储在一个合理的庄园中,以便相关项目位于同一位置,然后让这些类管理数据,即将它们转换到数据库中或从数据库中转换出来,并解析任何复杂的数据,如您提到的字符串(您可能使用EntityFamework或该层的其他代码生成器)
然后让您的业务层管理数据,这些层处理蛾、验证、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
}
为组织表编写数据表属性。在那里,您可以设置表的值,并获取更改列的值。