可以在Linq to SQL中进行高级搜索吗?

时间:2009-03-16 00:23:12

标签: linq-to-sql search

在Dynamic Linq中没有使用“LIKE”,在尝试创建高级搜索查询时,它实际上对我没用。

在使用Linq to SQL时,您是如何克服此高级搜索问题的?

我需要搜索以下字段类型,它们也可以为null:

  • 列表项
  • varchar(列LIKE'%'+ myText +'%')
  • text(列LIKE'%'+ myText +'%')
  • DateTime(列> = myDate - 如果“myDate”当然不为null)
  • integer(column = myInt - 如果“myInt”当然不为null)
  • 布尔

我也不能只使用ExecuteQuery,因为那时我没有得到真正的“实体”及其所有关系/关联。

我只是不知道如何使用Linq to SQL做到这一点。我目前没有存储过程,所以如果我能用Linq解决这个问题,我宁愿没有一个存储过程。

1 个答案:

答案 0 :(得分:2)

要制作LIKE语句,您可以使用Contains方法:

string myText = "test";
var query = dc.Table.Where(r=>r.Column.Contains(myText));

这将生成这种SQL语句:

SELECT [t0].[Column], ... [t0].[ColumnN]
FROM [Table] AS [t0]
WHERE [t0].[Column] LIKE @p0

@ p0参数将"%test%"作为值。

对于Date和int比较,如果我理解你想要什么,你可以这样做:

DateTime? myDate = new DateTime(2009, 3, 15);
var query = dc.Table.Where(r=> r.DateColumn > myDate || myDate == null );

因此,如果myDate为null,则不会评估条件DateColumn > myDate