2012-03-30 42 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)));