使用“Like”表达式,LINQ to Entity

问题描述 投票:-1回答:1

我花了很长时间试图解决这个问题,但我没有得到任何地方,所以我帮助别人帮助我。我有一个搜索表单,我希望在文本框中使用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)或者它是如此。

我知道使用StartsWithEndWithContains。我想通过使用"like %"选择如何查询搜索

c# linq-to-entities sql-like
1个回答
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.