Linq To逗号分隔列和列表之间的SQL查询?

时间:2012-12-06 10:04:41

标签: c# sql linq-to-sql linq-to-objects

我有一张桌子。

有一个列名是分支。其中包含逗号分隔值。喜欢这个

1,2
2,4
5,6
3,4
6,8
4,9,7

等等......

我有一个List<string>,其中包含两个值3和4。

我需要一个数据库查询,它将获取包含3或4的所有列数据。

所以out put将是

2,4
3,4
4,9,7

我正在使用此代码作为解决方案。

RowCollection.Where(row => row.Split(",").ToList()
           .Where(x => list.Contains(x)).Any()).ToList(); 

这显示错误。

Method 'System.String[] Split(Char[])' has no supported translation to SQL.

请让我知道解决方案我将为此做些什么。

1 个答案:

答案 0 :(得分:2)

不幸的是,你使用的IQueryable(Linq to SQL)不支持Split功能。

在这种情况下,你真的只剩下IEnumerable(Linq to Objects)支持它了。你需要做的第二个代码片段就是......

在这种情况下,试试看这个

var collection = RowCollection.ToList();

var filterdate = collection.Where(row => row.Split(",").ToList()
                    .Where(x => list.Contains(x)).Any()).ToList();

不支持拆分n t-sql你应该首先在一个列表中获取数据而不是应用你的条件。

或申请AsEnumerable()

var collection = RowCollection.AsEnumerable()
                  .Where(row => row.Split(",").ToList()
                        .Where(x => list.Contains(x)).Any()).ToList();