使用.Contains()搜索查询以合并两个列的参数

fre*_*hie 5 c# linq linq-to-sql

我有一个包含FirstName和LastName的表以及一个看起来像这样的查询:

var TheQuery = (from c in MyDC.Contacts
                where (c.FirstName.Contains(TheSearchParameter)  ||
                       c.LastName.Contains(TheSearchParameter))
                select c.ColumnID).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

如果用户搜索John或Smith,将返回记录,但如果用户搜索John Smith,则没有记录返回。如何Contains()运作?为了使其按预期工作,我需要在查询中进行哪些更改?

Shy*_*yju 1

您可以考虑StartsWith在 LINQ 表达式中添加方法。StartsWith 的工作方式与 SQL 类似where Column LIKE 'Something%'。您EndsWith还可以添加以使您的搜索范围更广

var TheQuery = (from c in MyDC.Contacts
                where (c.FirstName.Contains(TheSearchParameter)  ||
                       c.FirstName.StartsWith(TheSearchParameter) ||
                       c.FirstName.EndsWith(TheSearchParameter) ||
                       c.LastName.StartsWith(TheSearchParameter) ||
                       c.LastName.EndsWith(TheSearchParameter) ||
                       c.LastName.Contains(TheSearchParameter))
                select c.ColumnID).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)