Search code examples
c#linqlambdalinq-method-syntax

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",
};

I need a linq query with method syntax with returns "This is a Lemon", "This is a Orange" from fullMessagesList. I need to check for contains() for each text in another list.

I have written it using old school foreach loops but need to figure it with linq using method syntax.

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);
   }
}                       

Solution

  • var unknownFruites = fullMessagesList.Where(
        message => !partialMessagesList.Any(
            p => message.IndexOf(p, StringComparison.InvariantCultureIgnoreCase) >= 0
        )
    );
    

    The English interpretation of this code would be "select all messages where the message doesn't contain any string in the partial messages list."