2011-01-06 108 views
0

我有一个C#控制台应用程序,其简单地从一个SQL Server 2008数据库,并输出到一个Excel工作表的信息。解析姓名为第一名字和姓氏 - LINQ到实体

我正在使用Linq to Entities。

这里是一个代码片段只是为了演示如何将数据从数据库输出到Excel工作表。

cell = dataRow.CreateCell(colPosition++); // Title Group ID 
cell.SetCellValue(currentTitle.TitleGroupID); 

我的问题是,在我的数据库中,用户名存储为他/她的全名,例如,然而,“约翰史密斯”在Excel表格中分为名字和姓氏。

有没有办法将用户名解析为名和姓?

由于提前,如果需要更多的信息,只问:)

+0

你有没有办法花时间来正确构建数据库? – 2011-01-06 12:41:12

回答

1

解决这个问题是,他们是复杂的。所以,简而言之,不,你不能这么做,因为基本上不可能知道全名是姓氏和名字。但是你可以假设最后一部分总是姓(即使在很多情况下情况并非如此),并将字符串分割为空格。

string [] Name = fullNameString.Split(" "); 
string firstname = Name.Take(Name.Length - 1); 
string lastname = Name.Last(); 
1

您可以用空格分割字符串起来,并采取第一个字作为名字,其余字作为姓氏。

+0

这可能是最好的主意,因为它保留了来自数据库的所有信息。 – MvcCmsJon 2011-01-25 15:26:41

2

如果您确定第一名称不包含可以使用string.Split方法

string [] Name = fullNameString.Split(" "); 
string firstname = Name[0]; 
string lastname = Name[1]; 
+0

我会试试这个。感谢您的解释:) – 109221793 2011-01-06 12:24:51

0

是很困难的任务中的任何空间。你应该分析你的所有数据。 为简单的情况下,你可以通过“”和名字设置第一个字,姓氏设置第二个世界拆分文本。 但是,如果你有其他的情况下,你应该用的东西是其他名字的方式

1

您可以使用朴素的方法简单地拆分最后一个单词。

然而,这并不能在不了解语言的情况下可靠地解决。 “弗雷德迪科斯特洛”实际上有一个名字“迪科斯特洛”,与“克劳斯冯特劳普”相同。