后台-插件-广告管理-内容页广告位一(手机)

您现在的位置是:首页 > 开发类 > 问答问答

Linq问题

2021-07-06 20:41:38问答人已围观

简介 有一个字断IDs 是varchar(100)类型
存放着如下形式的数据:IDs
15,16,17
16,17,18
14,19
16,18
当然。。 数据是存放在数据库上面的。。

现在程序上面传过

有一个字断IDs 是varchar(100)类型

存放着如下形式的数据:IDs

15,16,17

16,17,18

14,19

16,18

当然。。 数据是存放在数据库上面的。。

现在程序上面传过来一个List<string>("15","16")

现在要把上面含有15或16的IDs取出来。

也就是取出 15,16,17

16,17,18

16,18 这三列。。

麻烦大家先在程序中测试好再传过来。。还有一点。。 一定要连上数据库查。。

因为我试过用let 结果在内存中新建一个数据查可以。结果一连到数据库就出错。。。

当然因为LET只是创建一个变量。自然没法在SQL上。。。

最佳答案:

Code
List<string> list = new List<string>() { "15", "16" };

//Build expression
ParameterExpression parameter = Expression.Parameter(typeof(TT), "t");
Expression prop
= Expression.Property(parameter, "ID");
Expression exp
= null;
foreach (string s in list)
{
Expression current
= Expression.Call(
prop,
typeof(string).GetMethod("Contains"), Expression.Constant(s));

exp
= (exp == null ? current : Expression.Or(exp, current));
}

Expression
<Func<TT, bool>> lambda =
Expression.Lambda
<Func<TT, bool>>(exp, parameter);

//Query
using (TestDataContext ctx = new TestDataContext())
{

var query
= ctx.TTs.Where(lambda);

foreach (TT t in query)
{
Console.WriteLine(t.ID);
}
}

 

用你的数据测试通过,建表如下

create table TT (
    ID nvarchar(100) not null
);

文章来源:https://q.cnblogs.com/q/2745/

Tags:.net技术 ASP.NET 

很赞哦! ()

上一篇:一个很难的问题

下一篇:返回列表

后台-插件-广告管理-内容页广告位二(手机)

相关文章

后台-插件-广告管理-内容页广告位三(手机)
后台-插件-广告管理-内容页广告位四(手机)

文章评论

留言与评论(共有 0 条评论)
   
验证码: