linq查询问题

zhanglong_longlong 2015-04-30 01:39:33

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[] array = { "111","444" };
List<Test> lstTest = new List<Test>()
{
new Test{ Name="a1",Tag="111,222,333"},
new Test{ Name="a2", Tag="222,333,444"}
};
// var lst = lstTest.Where(x => array.Contains(x.Tag)).ToList();
var lst = lstTest.Where(x => x.Tag.Contains(string.Join(",", array))).ToList();
foreach (var i in lst)
{
Console.Write("Name:{0},Tag:{1}", i.Name, i.Tag);
}
}
}

class Test
{
public string Name { get; set; }
public string Tag { get; set; }
}
}


这里的Test我是模拟数据库的数据,我想实现array数组中的字符串在Tag里面存在的数据将他查询出来,我这里写的Contains是不行的
...全文
149 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanglong_longlong 2015-04-30
  • 打赏
  • 举报
回复
引用 7 楼 starfd 的回复:
xxxxoooo就是你在外部循环数组拼接CHARINDEX
CHARINDEX('12','123456')>0
写反了,看到了,多谢
zhanglong_longlong 2015-04-30
  • 打赏
  • 举报
回复
引用 7 楼 starfd 的回复:
xxxxoooo就是你在外部循环数组拼接CHARINDEX
CHARINDEX('12','123456')>0
这样好像写的不对 select * from Test a where exists(select 1 from Test where CHARINDEX(a.Tag,'111,222')>0)
  • 打赏
  • 举报
回复
xxxxoooo就是你在外部循环数组拼接CHARINDEX
CHARINDEX('12','123456')>0
  • 打赏
  • 举报
回复
sql就是where exists(select 1 1 from table where xxxxoooo)
  • 打赏
  • 举报
回复
数组可以直接用contains的啊 为啥要用逗号join成一个字符串
zhanglong_longlong 2015-04-30
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
array.Any(y=>x.Contains(y))
那就不切割
大哥,如果用sql的方式应该怎么做?
  • 打赏
  • 举报
回复
array.Any(y=>x.Contains(y))
那就不切割
zhanglong_longlong 2015-04-30
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
x.Tag.Split(',').Any(y=>array.Contains(y))
这种效率应该不是很高吧,因为要考虑到我的Test是我模拟的数据库表的数据
  • 打赏
  • 举报
回复
x.Tag.Split(',').Any(y=>array.Contains(y))

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧