【发布时间】:2015-08-03 22:04:53
【问题描述】:
我有这段代码 sn-p 查询包含名字、中间名和姓氏的 SQL 表。该模型需要名字和姓氏,但中间名是可选的。这是我遇到的这段代码的问题。无论为中间名输入什么值(空白或存在值),结果集中都不会返回不包含中间名的记录。搜索 John Smith 将返回“John M Smith”,但不会返回“John Smith”。我还应该注意,数据库中的中间名列可以包含 null、空白或字符串值。这是一个旧的 MS SQL 数据库,带有一个写得很糟糕的 VB 前端。
代码:
var query = (from i in ctx.Individuals
join l in ctx.Licenses on i.IndividualId equals l.IndividualId
where i.FirstName.StartsWith(firstName) && i.LastName.StartsWith(lastName) && i.MiddleName.StartsWith(middleName ?? i.MiddleName)
select new IndividualDTO()
{
IndividualId = i.IndividualId,
FirstName = i.FirstName,
LastName = i.LastName,
MiddleName = i.MiddleName,
LicenseNumber = l.LicenseNumber
}).OrderBy(i => i.FirstName).OrderBy(i => i.LastName).Take(50).ToList();
【问题讨论】:
-
一些数据库将空字符串视为
null。但我们可能需要查看生成的查询。