2012-03-30 41 views
0

我想在visual studio中使用linq的姓。在我的数据库中,我有“FullName”字段名称。使用LINQ查找姓氏

在这个领域我有像“Subbu Cargos”的价值 我想在我的文本框中显示“Cargos”。

我怎样才能做一个简单的linq查询?

+1

我姓Iftode和自我的文化的名字拼写为“Iftode Adrian”(即姓氏第一:)),不要忘记我也有一个中间名,也许将来我会获得一个标题,如果它会如何处理我的名字被保存在你的数据库? – 2012-03-30 11:22:34

+0

有趣的是,你选择了这样做的方式是错误的:) – 2012-03-30 11:30:57

+2

姓氏也可以包含由空格分隔的几个词。在一些文化中,你会遇到很多这样的文化。如果您仍然可以修改数据库以使用单独的字段,则应该这样做。 – Botz3000 2012-03-30 11:32:56

回答

1

难道是在简单地说:

return FullName.Split(' ').Last() 

+0

它不能与Linq 2一起使用Sql – 2012-03-30 11:40:35

0

我会建议不要试图解析出姓氏。就像你说的那样,名字和姓氏可以切换,有人可能会有第二个名字,或者是由多个单词组成的姓氏(“van Dijk”),或者根本没有输入姓氏。

看看这篇文章:Falsehoods Programmers Believe About Names

如果仍要但是要做到这一点,尝试这样的事情:

customers.Select(c => c.FullName.Split(' ').Last()); 

你可能不能够这样在服务器端。在这种情况下:

customers 
    .Select(c => c.FullName) 
    .ToList() 
    .Select(n => n.Split(' ').Last()); 

未经测试,但这应该给出一个粗略的想法。

0

我建议把它分解成不同的字段 - 名字,中间名,姓氏,标题 - 当你显示它时重新建立名字。

如果你仍然决定使用一个字段,然后再考虑喜欢的查询:

string s = "Subba Cargos"; 
var lastnames = from name in s.Split(new Char[] { ' ' }).Last<string>() 
         select name; 
+0

为什么s.Split(new char ..)..只是一个s.Split()将做..此外,这将返回IEnumerable 不是一个字符串.. – Flowerking 2012-03-30 12:26:02

0

你也可以做这样的:

customers 
.Select (b => b.FullName.Substring ((b.FullName.IndexOf(' ') + 1)));