簡體   English   中英

Linq包含SQL Like%

[英]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”一樣使用。 有關詳細信息,請參見鏈接:

Tip-8使用Linq到實體中使用樣式查詢的地方

我認為您正在尋找這樣的東西:

如何在linq中執行sql

您應該這樣使用:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM