我有一个只读给我的linq表“KUND”。它有一些特殊的字符,我已经写了一个功能,将它们切换到我想要的。
public static string changeSpecialCharacters(string kund)
{
StringBuilder b = new StringBuilder(kund);
b = b.Replace("Õ", "å");
b = b.Replace("┼", "Å");
b = b.Replace("õ", "ä");
b = b.Replace("─", "Ä");
b = b.Replace("÷", "ö");
b = b.Replace("Í", "Ö");
b = b.Replace("'", " ");
b = b.Replace("¦", "´");
b = b.Replace("Ï", "Ø");
return b.ToString();
}
我现在有两个问题:
1我可以在自动生成的datacontext中将此函数添加到GET中,所以我不必在代码中调用它吗?我添加了它,但每当我改变我的datacontext(添加/删除表)时它似乎被删除。 2有关如何在速度方面提高功能的任何建议吗?
答案 0 :(得分:3)
永远不要编辑.designer.cs;相反,添加第二个文件,并使用partial class
添加方法,例如:
namespace Your.Namespace
{
partial class YourDataContext
{
// your methods here
}
}
没有;你不能把这个添加到get。另一种选择是扩展方法:
namespace Some.Utility.Namespace
{
public static class SomeUtilityClass
{
public static string ChangeSpecialCharacters(this string kund)
{ ... } // note the "this" in the above line
}
}
现在你可以使用:
string name = obj.Name.ChangeSpecialCharacters();
我个人会重命名这个来澄清变化的方向,并且有两个方法 - 一个用于编码,一个用于解码。
为一组数据执行此操作;也许:
public static IEnumerable<SomeType> ChangeSpecialCharacters(
this IEnumerable<SomeType> items)
{
foreach(var item in items)
{
item.Name = item.Name.ChangeSpecialCharacters();
item.Foo = item.Foo.ChangeSpecialCharacters();
...
item.Bar = item.Bar.ChangeSpecialCharacters();
yield return item;
}
}
答案 1 :(得分:0)
可能您可以将变量初始化为:
private string kund;
public string Kund
{
get
{
return changeSpecialCharacters(string kund);
}
set
{
kund = value;
}
}