C# Lambda语句相交

C# Lambda语句相交,c#,lambda,intersect,C#,Lambda,Intersect,尝试在不执行foreach等操作的情况下完成这个lambda查询。我目前有一个数据库表,其中有一列包含逗号分隔的字符串列表。它基本上是一个过滤器(例如可以是“裤子、上衣、t恤、手套”)。在查询数据库的函数中,基本上有一个接受类似字符串的参数 我不知道我现在是不是太累了,不能解决它,而是在挣扎。我知道它将是Intersect,但无法理解语法 目前我有 public static List<ItemListItem> GetItems(string filter = "")

尝试在不执行foreach等操作的情况下完成这个lambda查询。我目前有一个数据库表,其中有一列包含逗号分隔的字符串列表。它基本上是一个过滤器(例如可以是“裤子、上衣、t恤、手套”)。在查询数据库的函数中,基本上有一个接受类似字符串的参数

我不知道我现在是不是太累了,不能解决它,而是在挣扎。我知道它将是Intersect,但无法理解语法

目前我有

    public static List<ItemListItem> GetItems(string filter = "")
    {
        var db = new dbConnection();

        var results = (from i in db.Items
                       select i);

        if (!string.IsNullOrEmpty (filter))
            results = results.Where(x => x.Filters.Split(',').Intersect(filter.Split(',')) )

    }
公共静态列表GetItems(字符串过滤器=”)
{
var db=new dbConnection();
var results=(从数据库项中的i开始)
选择i);
如果(!string.IsNullOrEmpty(筛选器))
results=results.Where(x=>x.Filters.Split(',').Intersect(filter.Split(','))
}

您需要
可枚举。任何
在您的
的结尾处相交的
都像:

x.Filters.Split(',').Intersect(filter.Split(',')).Any()
所以你的问题是:

results = results.Where(x => x.Filters.Split(',')
    .Intersect(filter.Split(','))
    .Any()); 

可枚举。其中
将要求表达式返回
bool
Intersect
将返回一个
IEnumerable
Enumerable。其中
将不接受它。添加
Enumerable.Any
意味着返回交叉点产生任何行的行

我想您只需要返回
.Count()>0