LINQ to SQL – 选择字符串数组之类的文本
发布时间:2020-05-24 10:32:02 所属栏目:MsSql 来源:互联网
导读:我有一个List string变量计数,我想查询(通过LINQ)一个表来查找包含Text列中任何字符串的任何项目. 试过这个(不起作用): items = from dbt in database.Items where (stringList.FindAll(s = dbt.Text.Contains(s)).Count 0) select dbt;
|
我有一个List< string>变量计数,我想查询(通过LINQ)一个表来查找包含Text列中任何字符串的任何项目. 试过这个(不起作用): items = from dbt in database.Items
where (stringList.FindAll(s => dbt.Text.Contains(s)).Count > 0)
select dbt;
查询将类似于: select * from items where text like '%string1%' or text like '%string2%' 这可能吗? 解决方法查看这篇文章,做你想做的事:http://www.albahari.com/nutshell/predicatebuilder.aspx 这就像一场梦.我基本上剪切并粘贴了他们的代码并将其取回(当然是我自己的数据方案): SELECT [t0].[Id],[t0].[DateCreated],[t0].[Name] ... FROM [dbo].[Companies] AS [t0] WHERE ([t0].[Name] LIKE @p0) OR ([t0].[Name] LIKE @p1) 这是我为概念证明运行的代码: using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
namespace PredicateTest
{
class Program
{
static void Main(string[] args)
{
DataClasses1DataContext dataContext = new DataClasses1DataContext();
Program p = new Program();
Program.SearchCompanies("test","test2");
var pr = from pi in dataContext.Companies.Where(Program.SearchCompanies("test","test2")) select pi;
}
DataClasses1DataContext dataContext = new DataClasses1DataContext();
public static Expression<Func<Company,bool>> SearchCompanies(
params string[] keywords)
{
var predicate = PredicateBuilder.False<Company>();
foreach (string keyword in keywords)
{
string temp = keyword;
predicate = predicate.Or(p => p.Name.Contains(temp));
}
return predicate;
}
}
public static class PredicateBuilder
{
public static Expression<Func<T,bool>> True<T>() { return f => true; }
public static Expression<Func<T,bool>> False<T>() { return f => false; }
public static Expression<Func<T,bool>> Or<T>(this Expression<Func<T,bool>> expr1,Expression<Func<T,bool>> expr2)
{
var invokedExpr = Expression.Invoke(expr2,expr1.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T,bool>>
(Expression.OrElse(expr1.Body,invokedExpr),expr1.Parameters);
}
public static Expression<Func<T,bool>> And<T>(this Expression<Func<T,bool>>
(Expression.AndAlso(expr1.Body,expr1.Parameters);
}
}
}
我建议去网站寻找代码和解释. (我要留下第一个答案,因为如果你需要一个IN声明它会很好用) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
