小编inv*_*pid的帖子

Linq中的LIKE和OR和东西

我正在尝试使用||编写linq-to-sql查询 当与LIKE/Contains结合使用时,其行为与SQL中的OR相同.

SQL:

SELECT * FROM Users
WHERE GroupNumber = 'A123456'
OR (FirstName LIKE 'Bob%' AND LastName LIKE 'Smith%')
Run Code Online (Sandbox Code Playgroud)

这将导致每个人的名字像"Bob Smith"以及GroupNumber等于A123456的每个人.在我的数据库中,sql示例给出了三个结果(所需的结果):

A123456   John Davis
A312345   Bob Smith
A123456   Matt Jones

Linq :(提供PNum = A123456; first ="Bob"; last ="Smith")

var users = from a in dc.Users
        where a.PolicyNumber == PNum || (SqlMethods.Like(a.FirstName, first + "%") && SqlMethods.Like(a.LastName, last + "%"))
        orderby a.PolicyNumber, a.FirstName
        select a;
Run Code Online (Sandbox Code Playgroud)

这只会给我在||左侧的结果:

A123456   John Davis
A123456   Matt Jones

我也试过a.Contains()和a.StartsWith(),但是每个版本我得到相同的两个结果.当我删除任何Like/Contain/StartsWith时,我得到了所需的结果,但我需要通配符.如何在Linq查询中获得所有三个结果?

sql linq contains linq-to-sql sql-like

7
推荐指数
1
解决办法
595
查看次数

标签 统计

contains ×1

linq ×1

linq-to-sql ×1

sql ×1

sql-like ×1