C# LINQ-向datacontext添加函数
我有一张linq表“KUND”,只对我读。它有一些特殊的字符,我写了一个函数将它们切换到我想要的字符C# LINQ-向datacontext添加函数,c#,linq,datacontext,stringbuilder,C#,Linq,Datacontext,Stringbuilder,我有一张linq表“KUND”,只对我读。它有一些特殊的字符,我写了一个函数将它们切换到我想要的字符 public static string changeSpecialCharacters(string kund) { StringBuilder b = new StringBuilder(kund); b = b.Replace("Õ", "å"); b = b.Replace("┼", "Å"); b = b.Rep
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.有没有关于如何提高该功能的速度的建议?切勿编辑.designer.cs;相反,添加第二个文件,并使用
partial class
添加方法,例如:
namespace Your.Namespace
{
partial class YourDataContext
{
// your methods here
}
}
没有;您不能将此添加到get。不过,另一种选择是扩展方法:
现在您可以使用:
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;
}
}
公共静态IEnumerable ChangeSpecialCharacters(
这是(可数项目)
{
foreach(项目中的var项目)
{
item.Name=item.Name.ChangeSpecialCharacters();
item.Foo=item.Foo.ChangeSpecialCharacters();
...
item.Bar=item.Bar.ChangeSpecialCharacters();
收益回报项目;
}
}
您可能可以将变量初始化为:
private string kund;
public string Kund
{
get
{
return changeSpecialCharacters(string kund);
}
set
{
kund = value;
}
}
但是如果我得到一个列表,然后对它进行数据绑定……那么我就没有办法使用ext方法了,是吗?我是否可以使ext方法在其中的所有项上循环并调用该函数?所以我可以做这个列表kunder=new-new-List().changeSpecialCharacters()?我如何在整个对象上执行此操作?有点像
List kunder=new List().changeSpecialCharacters()
@Andreas-您可以在列表
(或者可能是IEnumerable
上编写一个扩展方法,在记录上循环更改必要的属性。您可以提供一个代码示例吗?我从来没有这样做过,并且在尝试时无法使其工作..无法使用item.Name=item.Name.ChangeSpecialCharacters():因为它是只读的。。。
private string kund;
public string Kund
{
get
{
return changeSpecialCharacters(string kund);
}
set
{
kund = value;
}
}