[英]Linq contains for SQL Like %
基本上,我想對像%這樣的SQL使用LINQ語句。 我認為。包含適當的內容,但我沒有得到正確的結果。
我有一個模型:
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的條目,但返回的結果為空。 :(這也應該與.Contains(“ 333”)一起使用,但是無效。
我懷疑您實際上是在使用linq-to-sql提供程序。 如果是這種情況,則應使用SqlMethods.Like
而不是String.Contains
:
list.Where(l => SqlMethods.Like(l.Number, "%12%")).ToList();
包含語句應像sql運算符“ IN”一樣使用。 有關詳細信息,請參見鏈接:
我認為您正在尋找這樣的東西:
您應該這樣使用:
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);
}
}
}
輸出為:
13330A
3330A
543330
檢查您的代碼,您可以在http://dotnetfiddle.net/143UgC上玩此示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.