具有类型 List<string> 的两个列表所需的方法语法的 Linq 查询

Linq query with method syntax needed for two lists with type List<string>

var fullMessagesList = new List<string>(){
"This is Apple",
"This is mango",
"This is a Lemon",
"This is a Orange"
};

var partialMessagesList = new List<string>(){
"Apple",
"mango",
};

我需要一个带有 returns "This is a Lemon" 方法语法的 linq 查询, "This is a Orange" 来自 fullMessagesList。我需要检查另一个列表中每个文本的 contains()。

我使用老派的 foreach 循环编写了它,但需要使用方法语法通过 linq 对其进行计算。

var unknownFruites = new List<string>();
foreach (var message in fullMessagesList)
{
   var flag = 1;
   foreach (var partialmessage in partialMessagesList)
   {
      if (message.Contains(partialmessage))
      {
        flag = 0;
        break;
      } 
   }

   if (flag == 1)
   {
      unknownFruites.Add(message);
   }
}                       
var unknownFruites = fullMessagesList.Where(
    message => !partialMessagesList.Any(
        p => message.IndexOf(p, StringComparison.InvariantCultureIgnoreCase) >= 0
    )
);

此代码的英文解释为 "select all messages where the message doesn't contain any string in the partial messages list."

如果要忽略大小写:

var unknownFruites = fullMessagesList.Where(
    message => !partialMessagesList.Any(p => string.Compare(p, message, true) == 0)
);