C# LINQ-向datacontext添加函数

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

我有一张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.有没有关于如何提高该功能的速度的建议?

切勿编辑.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;
    }
}