我正在寻找包含此字符串 var interestIds = db.Interests.Where(i => i.Name.Contains("interest_name"))
.Select(i => i.InterestId)
.ToList().ConvertAll(i => i.ToString());
//var profiles = new List<UserProfile>();
var allProfiles = (from UserProfile up in db.UserProfiles
from i in interestIds
where up.Interests.Contains(i)
select up).ToList();
return allProfiles;
//string sId = null;
//foreach (var id in interestIds)
//{
// sId = id.ToString();
// profiles.AddRange(db.UserProfiles
// .Where(p => p.Interests.Contains(sId))
// .ToList());
//}
//return profiles;
这是一个场景模型:
[management]
上面找到了我的期望,但为什么以下找不到相同的字符串?
create table #test (st varchar(200))
insert into #test
values
('hello'),
('hello management'),
('hello [management]'),
('hello [management] blah'),
('hello [management rev] blah');
select * from #test where st like '%\[management]%' ESCAPE '\'
答案 0 :(得分:4)
你应该只像这样逃避起始括号:
DECLARE @t table(x varchar(100))
INSERT @t
SELECT '[management]'
SELECT * from @t where x like '%[[]management]%'
编辑:
一旦你输入'[]]',就像一样,希望找到一个与之无关的角色。 '[xy]]'会要求一个字符列表('x'或'y')位于该位置,'[]]'将导致一个空字符列表位于该位置,使得匹配不可能
答案 1 :(得分:2)
好问题!实际上,感觉%[[] text []]%应解析为:
ANYTHING [文本] ANYTHING 。
但事实并非如此。因为],与[不启动模式搜索不一样,它不需要转义。请改用%[[] text]%。
有关详细信息,请参阅MSDN Like页面上的“将通配符用作文字”部分。