我有一个带有一些nvarchar列的sql表,我们称之为'Title'和'Value'。
我目前使用linqtosql查询进行前缀搜索以查找此表中的行,如此
var result = from _item in GetTable()
where _item.Title.StartsWith( "hello" ) || _item.Value.StartsWith( "hello" )
select _item;
return result.Take( 100 );
生成相应的sql:
@p0=N'hello%'
@p1=N'hello%'
SELECT TOP (100) *
FROM [Table] AS [t0]
WHERE ([t0].[Title] LIKE @p0) OR ([t0].[Value] LIKE @p1)
在某种程度上有效,但是我想说我想在Title列上优先考虑Value列。即如果_item.Value.StartsWith约束返回100个结果,则只返回那些结果。如果它返回25个结果,则剩余的75个将从“标题”约束中填充。
我可以使用多个查询来完成它,但这可以用重复的条目填充我的结果集。
这可以在linqtosql中完成,还是我必须手动编写一个sql查询来修复它?无论哪种情况,怎么办?
答案 0 :(得分:2)
你能加ORDER BY
吗? (不知道怎么在linq中这样做)
ORDER BY CASE WHEN [t0].[Value] LIKE @p1 THEN 0 ELSE 1 END