C# - 如何使用Where Like%搜索IQueryable对象

Rou*_*dre 6 c# sql asp.net iqueryable

我没有找到一种方法来IQueryable使用LIKE %some%text%SQL命令中的运算符来搜索对象.

目前我这样做:

System.Data.Entity.DbSet<Shop> database_Shops = database.Shops;
string searched_shop = !String.IsNullOrEmpty(post_data["shop"]) ? post_data["shop"] : " ";

ViewBag.shops = database_Shops
                .Where(shop => shop.Name.ToUpper().Contains( searched_shop.ToUpper()))
                .Take(RESULTS_PER_PAGES * pageNumber);
Run Code Online (Sandbox Code Playgroud)

但它没有找到没有空间的入口shop.Name.有人知道这样做的方法吗?

非常感谢你!

Que*_*ger 11

您可以SqlMethod在命名空间中使用System.Data.Linq.SqlClient:

database_Shops.Where(shop => SqlMethods.Like(shop.Name, "%some%text%"));
Run Code Online (Sandbox Code Playgroud)

SqlMethods.Like方法(String,String)

在EF Context中,您可以SqlFunctions在命名空间中使用System.Data.Objects.SqlClient.SqlFunctions

database_Shops.Where(shop => SqlFunctions.PatIndex("%some%text%", shop.Name) > 0);
Run Code Online (Sandbox Code Playgroud)

SqlFunctions.PatIndex方法(String,String)