C# 我可以使用linq';一个术语的复数化方法是什么?

C# 我可以使用linq';一个术语的复数化方法是什么?,c#,linq,pluralize,C#,Linq,Pluralize,在.NET3.5中,如果我生成一个LINQtoSQL数据上下文,它会为名称的复数化带来奇妙的魔力。在我的代码中,我需要将一些术语复数化。我可以使用Linq用来生成复数的任何方法吗?您必须使用reflector来深入研究为Linq to sql设计器生成代码的visual studio程序集。Linq to sql不会公开其复数化逻辑。通过对Reflector的快速检查,可以发现它没有使用非常复杂的算法: 如果以“x”、“ch”、“sh”或“ss”结尾,则添加“es”。 如果它以“y”结尾,前面有

在.NET3.5中,如果我生成一个LINQtoSQL数据上下文,它会为名称的复数化带来奇妙的魔力。在我的代码中,我需要将一些术语复数化。我可以使用Linq用来生成复数的任何方法吗?

您必须使用reflector来深入研究为Linq to sql设计器生成代码的visual studio程序集。

Linq to sql不会公开其复数化逻辑。通过对Reflector的快速检查,可以发现它没有使用非常复杂的算法:

如果以“x”、“ch”、“sh”或“ss”结尾,则添加“es”。
如果它以“y”结尾,前面有一个辅音,则删除y并添加“ies”。
否则,请添加“s”


如果.NET4是一个选项,那么EF的多元化服务将更加彻底。以防万一,你需要将“肺炎微镜矽肺孢子虫病”多元化。

还有一个.NET的拐点端口,它也起到同样的作用。作者的博客现在已经关闭了,但可以在其他网站上找到


(via)

LINQ to SQL使用一个相当简单的系统实现多元化。如果您要使用复杂的术语,我建议您使用类似的术语。这段代码似乎起源于。

不知道3.5,但如果我的目标是4,我会查看EF4的Bummer。我被困在3.5的时刻,我想我会得到一个免费赠品,因为你是一个主持人,它是在一个评论=)拐点不是亚音速的一部分,这似乎是一个严重错误的归因。它是由Andrew Peters编写的,作为ruby inflector的一个端口。他的网站不再可用,但是他的代码仍然可以访问:并且正确地包含了他的版权声明。实际上,我想说亚音速版本是Rails版本的一个独立端口,因为他们在移植后对如何命名做出了不同的决定。@stevemegson没错,名称是不同的。然而,亚音速似乎采用了Andrew的版本,重命名了所有方法,并添加了简短的XML文档。