此查询正常工作:
var results = _mp4Db.Videos.FromSql(
"Select *
from Video
where isValid = 1
and (contains(Subject,'\"" + text + "" + '*' + "\"')
or contains(Description,'\"" + text + "" + '*' + "\"'))
order by
case
when contains(Subject,'\"" + text + "" + '*' + "\"')
then 1
else 2
end,
len(Subject)
offset 20 rows fetch next 20 rows only ");
但是如果我使用string.Format
来获得更清晰的代码,它不会返回应该返回的结果:
var results = _mp4Db.Videos.FromSql(
"Select *
from Video
where isValid=1
and (contains(Subject,'\"{0}{1}\"')
or contains(Description,'\"{0}{1}\"'))
order by case
when contains(Subject,'\"{0}{1}\"')
then 1
else 2 End ,
LEN(Subject)
Offset 20 rows fetch next 20 rows only ", text, '*');
您知道这里缺少什么吗?
答案 0 :(得分:0)
尝试使用$
运算符并通过调用.ToList()
方法执行查询:
var results = _mp4Db.Videos.FromSql(
$"Select * from Video where isValid=1 and (contains(Subject,'\"{text}{'*'}\"') " +
$"or contains(Description,'\"{text}{'*'}\"')) " +
$"order by case when contains(Subject,'\"{text}{'*'}\"') then 1 " +
$"else 2 End , LEN(Subject) Offset 20 rows fetch next 20 rows only "
).ToList();