2011-04-15 89 views
5

我想在Visual Studio中使用LINQ to SQL進行一個簡單的搜索方法。在我的數據庫中,我有「Firstname」和「Lastname」字段,而我的搜索字符串是「name」。我怎樣才能做一個簡單的LINQ查詢來搜索這兩個字段?在LINQ to SQL中搜索兩列?

在普通的SQL我會做這樣的事情:

+2

那你嘗試至今,爲什麼不工作? – 2011-04-15 11:35:41

+0

我不知道如何在Linq中加入兩個字段,所以還沒有真正嘗試過任何東西。 – user709712 2011-04-15 11:39:24

回答

18

通常要做的事情是這樣的:

var users = 
    from user in db.Users 
    where user.FirstName.Contains(searchString) || 
     user.LastName.Contains(searchString) 
    select user; 

然而,這並不等同於您的SQL查詢。以下是等價的:

var users = 
    from user in db.Users 
    let fullName = user.FirstName + user.LastName 
    where fullName.Contains(searchString) 
    select user; 
+0

Blah毆打它:(+1 – Phill 2011-04-15 11:41:52

+0

它的工作:)謝謝! – user709712 2011-04-15 11:43:20

+2

+1在第二個代碼框中的答案,但我想知道第一個框中的代碼。我看不到有任何工作。例如: searchString =「First Last」 將不匹配如果名字表中包含「第一」和姓氏表中包含「最後」 我想你會需要拆分字符串的工作。 – rasmusvhansen 2011-04-15 11:48:34

1
// get all items from table where firstname like searchstring or lastname like searchstring 
var result = from p in db.Table 
      where (p.Firstname.Contains(searchString) || p.Lastname.Contains(searchString)) 
      select p; 
+0

這與他的問題中的SQL無關。以我的名字爲例。搜索我的全名將返回我在他的SQL,但不是在您的查詢。 – 2011-04-15 11:42:15

4
var result = from p in db.Table 
      let fullname = p.FirstName + " " + p.Lastname 
      where fullname.Contains(searchString) 
      select new { Fullname = fullname }; 
+0

感謝您的幫助! =) – user709712 2011-04-15 11:44:37

+0

希望更多的人可以進一步閱讀,因爲當使用搜索字符串「Bob」,「Bob S」和「Bob Smith」時,此解決方案將找到Bob Smith。很好的答案,謝謝。 – 2017-11-10 09:04:25