C# Linq包含类似SQL的%
基本上,我希望使用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
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