2
単語の配列にループを実行して、項目に特定の単語が含まれている場合とそうでない場合があります。私はどのように絶対にクエリに含まれてループする知っているが、私はそれをしたくない。ここに私のコードは次のとおりです。OR foreach looped linqラムダ式
C#
var item = "the-batman-returns-hd-version";
var id = 0;
//split slug by dash into an array
var keywords = item.Split('-'); //gives me (the, batman, returns, hd, version)
//remove any work less than 4 chracters
var result = _contentService.Products;
foreach (var word in keywords)
{
if (word.Length <= 4) continue;
var key = word;
result = result.Where(c => c.Title.Contains(key));
}
var firstOrDefault = result.FirstOrDefault();
if (firstOrDefault != null)
{
id = firstOrDefault.Id;
}
//loop query to search where all parts exist
return (id);
上記作品。しかし、この製品は「バットマンリターン」と呼ばれているので、「hd」と「バージョン」を含むアイテムが見つからないため、0を返します。
とにかく、ループされたlinqにORがあります。以下のような:
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.
}
SQLでフィルタリングを実行したい場合は、それらの条件を 'OR'句のセットに「連結」する式ツリーを構築する必要があることに注意してください。 –