【问题标题】:use "Like" Expression, LINQ to Entity使用“Like”表达式,LINQ to Entity
【发布时间】:2012-11-07 13:12:18
【问题描述】:

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

这是我的代码的 sn-p:

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】:

    你可以使用:

    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);
    }
    

    【讨论】:

    • @lazyberezovsky - 为什么?这些是示例,您不一定会在同一代码中使用所有三个。
    • 我刚刚编辑了我的答案,因为我想避免“包含”。因为我希望可以使用类似这样的搜索:“%Myname%something%”
    • @MishMish - 我会单独构建字符串。虽然你的问题不清楚。
    • @ChrisF Pranay Ranga 使用示例数据作为他的答案,您使用了 OP 数据,因此它看起来像是完整的解决方案,而不是示例。 Ans 评论不是关于使用所有三个 - 它是关于评估财产价值。
    • Pranay 的答案很好,但它并没有满足我的需要,因为我需要在搜索查询中使用“%”
    猜你喜欢
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多