在LINQ to SQL中搜索两列?

use*_*712 5 .net c# linq vb.net linq-to-sql

我试图在Visual Studio中使用LINQ to SQL创建一个简单的搜索方法.在我的数据库中,我有"名字"和"姓氏"字段,我的搜索字符串是"名字".如何创建一个简单的LINQ查询来搜索这两个字段?

在纯SQL中我会做这样的事情:

SELECT (Firstname + Lastname) as 'Fullname'
FROM   table
WHERE  Fullname LIKE '%searchstring%'
Run Code Online (Sandbox Code Playgroud)

Ste*_*ven 18

通常要做的是:

var users =
    from user in db.Users
    where user.FirstName.Contains(searchString) ||
        user.LastName.Contains(searchString)
    select user;
Run Code Online (Sandbox Code Playgroud)

但是,这不等同于您的SQL查询.以下是等效的:

var users =
    from user in db.Users
    let fullName = user.FirstName + user.LastName
    where fullName.Contains(searchString)
    select user;
Run Code Online (Sandbox Code Playgroud)

  • 在第二个代码框中为答案+1,但我想知道第一个框中的代码.我看不到那种工作.示例:如果FirstName表包含"First"且LastName表包含"Last",则searchString ="First Last"将不匹配我猜您需要拆分字符串才能使用. (2认同)

Phi*_*ill 5

var result = from p in db.Table
             let fullname = p.FirstName + " " + p.Lastname
             where fullname.Contains(searchString)
             select new { Fullname = fullname };
Run Code Online (Sandbox Code Playgroud)