1

我有一张桌子。

有一列名称是分支。其中包含逗号分隔的值。像这样

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

等等...

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

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

所以输出将是

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.

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

4

1 回答 1

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();
于 2012-12-06T10:07:08.897 回答