2011-04-15 83 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