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