我可以使用linq的复数术语吗?

时间:2010-08-17 17:09:34

标签: c# linq pluralize

在.net 3.5中,如果我生成一个linq到sql数据上下文,它会使多个名称复杂化。在我的代码中,我需要复数一些术语。我可以使用Linq用来生成复数形式的任何方法吗?

4 个答案:

答案 0 :(得分:2)

您必须使用反射器深入挖掘为linq-to-sql设计器执行代码生成的visual studio程序集。

答案 1 :(得分:2)

LINQ to SQL不公开其复数逻辑。使用Reflector快速检查后发现它并没有使用非常复杂的算法:

  

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

如果.NET 4是一个选项,那么EF的PluralizationService就更彻底了。以防你需要复活'pneumonoultramicroscopicsilicovolcanoconiosis'。

答案 2 :(得分:2)

还有一个Inflector的.NET端口可以完成同样的工作。作者的博客现在已经关闭,但可以在http://cid-net.googlecode.com/svn/trunk/src/Cid.Mvc/Inflector.cs等网站上找到。

(通过Alternatives to Inflector.Net

答案 3 :(得分:0)

LINQ to SQL使用一个相当简单的系统进行复数化。如果您打算使用复杂的术语,我建议您使用the Inflector that is part of SEDE 之类的内容。这段代码似乎来自SubSonic project