使用"喜欢"表达式,LINQ to Entity

时间:2012-11-07 13:12:18

标签: c# linq-to-entities sql-like

我花了很长时间试图解决这个问题,但我没有到达任何地方,所以我帮助别人帮助我。 我有一个搜索表单,我希望在文本框中使用Like%运算符。

以下是我的代码片段:

var data = mg.DatabaseTable.Where(m => m.UserName.StartsWith(TextBoxUserID.Text) &&
                                       m.Content.Like(%TextBoxBarcode.Text&) &&
                                       m.Action.StartsWith(DropDownListStatus.Text) &&
                                       m.Site.Contains(TextBoxSite.Text));

我希望可以在"%%"中使用m.Content(textbox),或者使用StartsWith

我知道EndWithContains"like %"的使用情况。我希望能够选择如何使用{{1}}

查询搜索

1 个答案:

答案 0 :(得分:1)

您可以使用:

m.Content.StartsWith(TextBoxBarcode.Text);

like 'search%'

或:

m.Content.EndsWith(TextBoxBarcode.Text);

like '%search'

或:

m.Content.Contains(TextBoxBarcode.Text);

like '%search%'

如果您希望用户能够选择搜索类型,那么您需要有一个开关,然后是三个不同的查询。复制查询或执行一次基本查询,然后根据交换机过滤结果:

var data = mg.DatabaseTable.Where(m => m.UserName.StartsWith(TextBoxUserID.Text) &&
                                       m.Action.StartsWith(DropDownListStatus.Text) &&
                                       m.Site.Contains(TextBoxSite.Text));

if (searchMode == StartsWith)
{
    return data.Where(m => m.Content.StartsWith(TextBoxBarcode.Text);
}
else if (searchMode == EndsWith)
{
    return data.Where(m => m.Content.EndsWith(TextBoxBarcode.Text);
}
else
{
    return data.Where(m => m.Content.Contains(TextBoxBarcode.Text);
}