4

我是使用 Linq 的新手,无法使用 SqlMethods.Like 函数。

这是我的简化示例:

        List<string> mylist = new List<string>();
        mylist.Add("100");
        mylist.Add("101");
        mylist.Add("102");
        mylist.Add("103");
        mylist.Add("104");
        mylist.Add("105");
        mylist.Add("106");
        mylist.Add("107");

        var filtered = mylist.Where(x => SqlMethods.Like(x, "10%"));
        foreach (var record in filtered)
        {
            textBox1.Text += record + "\n";
        }

我的名为过滤的变量返回为空。我错过了什么?

如果我使用 x.Equals("100") 我会得到结果。

4

4 回答 4

8

SqlMethods.Like

确定特定字符串是否与指定模式匹配。此方法目前仅在 LINQ to SQL 查询中受支持。

您的查询不是 LINQ to SQL 查询。

于 2012-10-09T17:45:40.977 回答
1

你可以使用包含例如

var filtered = mylist.Where(x => x.Contains("10"));

如果你真的想要 SQL LIKE,你可以使用System.Data.Linq.SqlClient.SqlMethods.Like(...)LINQ-to-SQL 映射到LIKESQL Server 中的 。

于 2012-10-09T17:49:18.917 回答
1

在你的情况下使用:

var filtered = mylist.Where(x => x.Contains("10"));
于 2012-10-09T17:47:21.770 回答
0

您可以Contains operator改用 Like

于 2012-10-09T17:48:00.690 回答