Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用foreach循环linq lambda表达式_C#_Linq_Lambda - Fatal编程技术网

C# 如何使用foreach循环linq lambda表达式

C# 如何使用foreach循环linq lambda表达式,c#,linq,lambda,C#,Linq,Lambda,我试图通过在单词数组上运行循环,在我的数据库中查找某个项目的标题中可能包含或不包含特定单词的位置。我知道如何在查询中循环绝对包含,但我不想这样做。这是我的密码: C# var item=“蝙蝠侠返回高清版本”; var-id=0; //用破折号将蛞蝓分成一个阵列 var关键字=项目分割('-')//给我(游戏,蝙蝠侠,返回,高清,版本) //移除少于4个字符的任何工件 var result=\u contentService.Products; foreach(关键字中的var单词) { if(

我试图通过在单词数组上运行循环,在我的数据库中查找某个项目的标题中可能包含或不包含特定单词的位置。我知道如何在查询中循环绝对包含,但我不想这样做。这是我的密码:

C#

var item=“蝙蝠侠返回高清版本”;
var-id=0;
//用破折号将蛞蝓分成一个阵列
var关键字=项目分割('-')//给我(游戏,蝙蝠侠,返回,高清,版本)
//移除少于4个字符的任何工件
var result=\u contentService.Products;
foreach(关键字中的var单词)
{
if(字长c.标题包含(键));
}
var firstOrDefault=result.firstOrDefault();
if(firstOrDefault!=null)
{
id=firstOrDefault.id;
}
//循环查询以搜索所有零件存在的位置
返回(id);
以上工作。但是该产品被称为“蝙蝠侠返回”,所以它返回0,因为它找不到任何包含“hd”和“版本”的项目

是否有任何方式可以连接到或循环linq。例如:

 foreach (var word in keywords )
        {
            if (word.Length <= 4) continue;
            var key = word;
            result = result.Where(c => c.Title.Contains(key) ||); //or; then loop again.
        }
foreach(关键字中的变量字)
{
如果(word.Length c.Title.Contains(key)| |)//或;则再次循环。
}
您可以使用
.Any()
方法:

result = result.Where(c => keywords.Any(k => c.Title.Contains(k)));
您可以进一步筛选出少于5个字符的单词,就像您可能需要的那样:

result = result.Where(c => keywords.Where(k => k.Length > 4).Any(k => c.Title.Contains(k)));
尽管在构建关键字数组时只执行一次会更有效:

var keywords = item.Split('-').Where(k => k.Length > 4).ToArray();

请注意,如果希望在SQL中完成过滤,则必须建立一个表达式树,将这些条件“连接”到一组
子句中。
var keywords = item.Split('-').Where(k => k.Length > 4).ToArray();