Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq包含类似SQL的%_C#_Asp.net_Linq - Fatal编程技术网

C# Linq包含类似SQL的%

C# Linq包含类似SQL的%,c#,asp.net,linq,C#,Asp.net,Linq,基本上,我希望使用LINQ语句来表示类似sql的%。我想。包含是合适的,但我没有得到正确的结果 我有一个模型: public class Model { public string Number { get; set; } } 在我的职能范围内: private List<Model> getSearchResults(List<Model> models) { List<Model> result = models.Where(m =&g

基本上,我希望使用LINQ语句来表示类似sql的%。我想。包含是合适的,但我没有得到正确的结果

我有一个模型:

public class Model {
    public string Number { get; set; }
}
在我的职能范围内:

private List<Model> getSearchResults(List<Model> models) 
{
    List<Model> result = models.Where(m => m.Number.Contains("3330")).ToList();

    return result;
}
“我的模型”列表中肯定有一个编号为3330的条目,但返回的结果为空:
这也适用于.Contains333。但事实并非如此。

我怀疑您实际上在使用linq to sql提供程序。 如果是这种情况,则应使用而不是:


Contains语句应像sql运算符“IN”一样使用。有关详细信息,请参阅链接:

我想你正在寻找这样的东西:

List<Model> result = models.Where(m => m.Number.Contains("/3330/")).ToList();
您应该这样使用:

List<Model> result = models.Where(m => m.Number.Contains("/3330/")).ToList();

您也可以使用.StartsWith或.EndsWith

好的,这是我为您发布的代码示例,是的,Contains方法确实有效:

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public class Model {
        public string Number { get; set; }
    }

    private static List<Model> getSearchResults(List<Model> models) 
    {
        List<Model> result = models.Where(m => m.Number.Contains("3330")).ToList();

        return result;
    }

    public static void Main()
    {
        List<Model> list = new List<Model>() {
            new Model() { Number = "13330A"},
            new Model() { Number = "13230A"},
            new Model() { Number = "3330A"},
            new Model() { Number = "543330"},
            new Model() { Number = "48913"},
            new Model() { Number = "97798133"},
            new Model() { Number = "542130"}
        };

        foreach(Model v in getSearchResults(list)) {
            Console.WriteLine(v.Number);
        }      
    }
}

检查您的代码,您可以在

上玩此示例。请展示一个简短但完整的程序来演示此问题。我们对所涉及类型的了解还不够,无法帮助您。Contains方法确实有效,所以问题很可能是如何使用它。请注意,如果l.Number只是一个字符串,那么您根本没有使用LINQ Contains方法,而是使用string.Contains方法.List来自类型列表,并由我的数据库中的内容填充。数字是一个字符串。这在一定程度上对我们没有帮助,因为您的注释可能包含了泛型类型,但没有使用反勾号来引用,因此从我们看到的内容中丢失了类型。请用一个简短但完整的例子来编辑你的文章。有一件事我不明白。为什么要使用contains来匹配单个值。Contains相当于sql“IN”。我认为在这里使用它是不合适的。@mosquito87 NO Contains相当于IN。我已经分享了答案中的链接。请检查。我没有使用linq到sql提供程序。对不起-1什么让你怀疑?绝对没有提到L2S,OP也没有提到使用包含的任何类型的异常,我非常确定L2S会抛出这些异常。“这是猜测。”詹姆斯是一个受过教育的猜测。OP确实在评论中提到,该列表包含从数据库检索到的数据。由于L2S不支持String.Contains,所以看起来就是这样。在我看来,这是一个公平的假设。Tbh,我不知道是否抛出了异常。我正在做与您的第二个链接中提供的完全相同的事情,对吗?谢谢您的努力。但这肯定是行不通的!您发布的解决方案是使用/3330/查找条目,但我正在查找3330。原作者必须使用/12/,因为他要找一个月!
13330A
3330A
543330